• 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锁)
  • 相关阅读:
    记录按钮点击次数,点击三次之后跳转页面
    HTML拖放
    .Net实现发送邮件功能
    HTTP 400 错误
    方法(参数的传递)
    方法
    c# 属性 (get、set)
    Python和C++交互
    从Windows远程Ubuntu
    Eclipse+Tomcat WEB开发配置
  • 原文地址:https://www.cnblogs.com/Draymonder/p/11951443.html
Copyright © 2020-2023  润新知