什么時候用多線程什么時候用多進程呢?GUL


那么在 Python 中什么時候用多線程什么時候用多進程呢?當在CPU-bound(計算密集型:絕大多數時間在計算) 時最好用 - 多進程, 而在 I/O bound(I/O密集型 : IO 處理 並且 大多時間是在等待) 的時候最好用 - 多線程。

 

python因為其全局解釋器鎖GIL而無法通過線程實現真正的平行計算。這個論斷我們不展開,但是有個概念我們要說明,IO密集型 vs. 計算密集型。

IO密集型:讀取文件,讀取網絡套接字頻繁。

計算密集型:大量消耗CPU的數學與邏輯運算,也就是我們這里說的平行計算。

而concurrent.futures模塊,可以利用multiprocessing實現真正的平行計算。

核心原理是:concurrent.futures會以子進程的形式,平行的運行多個python解釋器,從而令python程序可以利用多核CPU來提升執行速度。由於子進程與主解釋器相分離,所以他們的全局解釋器鎖也是相互獨立的。每個子進程都能夠完整的使用一個CPU內核。

 


免責聲明!

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



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