python多線程適用場景

python多線程適用場景

 

python多線程不適用於cpu密集型操作(比單線程更耗時,由於GIL,參考:https://www.cnblogs.com/SuKiWX/p/8804974.htmlhttp://cenalulu.github.io/python/gil-in-python/),適用於IO密集型操作。

 

 

 

科普

CPU密集型(CPU-bound)


CPU密集型也叫計算密集型,指的是系統的硬盤、內存性能相對CPU要好很多,此時,系統運作大部分的狀況是CPU Loading 100%,CPU要讀/寫I/O(硬盤/內存),I/O在很短的時間就可以完成,而CPU還有許多運算要處理,CPU Loading很高。

在多重程序系統中,大部份時間用來做計算、邏輯判斷等CPU動作的程序稱之CPU bound。例如一個計算圓周率至小數點一千位以下的程序,在執行的過程當中絕大部份時間用在三角函數和開根號的計算,便是屬於CPU bound的程序。

CPU bound的程序一般而言CPU佔用率相當高。這可能是因爲任務本身不太需要訪問I/O設備,也可能是因爲程序是多線程實現因此屏蔽掉了等待I/O的時間。

IO密集型(I/O bound)


IO密集型指的是系統的CPU性能相對硬盤、內存要好很多,此時,系統運作,大部分的狀況是CPU在等I/O (硬盤/內存) 的讀/寫操作,此時CPU Loading並不高。

I/O bound的程序一般在達到性能極限時,CPU佔用率仍然較低。這可能是因爲任務本身需要大量I/O操作,而pipeline做得不是很好,沒有充分利用處理器能力。
 

發佈了22 篇原創文章 · 獲贊 6 · 訪問量 1萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章