zoukankan      html  css  js  c++  java
  • Python IO密集型为什么使用多线程

    IO密集型为什么使用多线程

    python多线程,可以粗浅理解只用了cpu的一个核心。
    为什么IO密集型用多线程?假设我们有多个线程都在发网络请求(request, 等response),一个请求的从发出到接收的过程中cpu大多时间都是在等。
    所以,当前线程发出请求后,由于不占用cpu资源,可以阻塞等待,然后cpu执行权可以被另外一个线程所享有去发网络请求。
    IO密集型,单个CPU利用率很低,可能只有10%,所以多线程可以提升cpu利用率,可能10个线程才能打满一个核心, 从而多线程也有并行的效果。

    所以python多线程 计算密集型没救了么

    Python社区也在非常努力的不断改进GIL,甚至是尝试去除GIL。并在各个小版本中有了不少的进步。有兴趣的读者可以扩展阅读这个Slide 另一个改进Reworking the GIL

    • 将切换颗粒度从基于opcode计数改成基于时间片计数
    • 避免最近一次释放GIL锁的线程再次被立即调度
    • 新增线程优先级功能(高优先级线程可以迫使其他线程释放所持有的GIL锁)
  • 相关阅读:
    逆元
    C++快读
    最长单调上升子序列(LIS) O(nlogn)求法
    【简●解】巴厘岛的雕塑
    【简●解】学校食堂
    【简●解】[HNOI2005]星际贸易
    差分约束系统小结
    【简•解】花园
    最小生成树小结
    概率及期望DP小结
  • 原文地址:https://www.cnblogs.com/Draymonder/p/11951443.html
Copyright © 2011-2022 走看看