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

时光怂恿深爱的人放手 提交于 2019-12-05 23:55:54

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锁)
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!