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鎖)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM