什么时候用多线程什么时候用多进程呢?GUL
生活随笔
收集整理的這篇文章主要介紹了
什么时候用多线程什么时候用多进程呢?GUL
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
那么在 Python 中什么時候用多線程什么時候用多進程呢?當在CPU-bound(計算密集型:絕大多數(shù)時間在計算) 時最好用 - 多進程, 而在 I/O bound(I/O密集型 : IO 處理 并且 大多時間是在等待) 的時候最好用 - 多線程。
python因為其全局解釋器鎖GIL而無法通過線程實現(xiàn)真正的平行計算。這個論斷我們不展開,但是有個概念我們要說明,IO密集型 vs. 計算密集型。
IO密集型:讀取文件,讀取網(wǎng)絡套接字頻繁。
計算密集型:大量消耗CPU的數(shù)學與邏輯運算,也就是我們這里說的平行計算。
而concurrent.futures模塊,可以利用multiprocessing實現(xiàn)真正的平行計算。
核心原理是:concurrent.futures會以子進程的形式,平行的運行多個python解釋器,從而令python程序可以利用多核CPU來提升執(zhí)行速度。由于子進程與主解釋器相分離,所以他們的全局解釋器鎖也是相互獨立的。每個子進程都能夠完整的使用一個CPU內(nèi)核。
總結(jié)
以上是生活随笔為你收集整理的什么时候用多线程什么时候用多进程呢?GUL的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。