立即學習:https://edu.csdn.net/course/play/24458/296444?utm_source=blogtoedu
GIL與多線程
?
1.須知:
1)cpu主要是為了提升計算性能,增加CPU提升計算性能;
2)每一個CPU一旦遇到阻塞狀態都會處于等待狀態,因此對于I/O阻塞來說,多核CPU就等于是擺設
3)同一時間,同一個進程只能有一個線程在執行,由于GIL
4)進程是操作系統分配儲備資源的最小單位;線程是操作系統調度的最小單位
?
2.I/O密集型與計算密集型
1)I/O密集型:一直在執行CPU,中間有等待的過程,這個就叫做I/O密集型,如sleep
2)計算密集型:中間沒有等待的過程,代碼自上而下地運行
?
3.對于多核CPU來說:
1)計算密集型:多進程效率高,因為python中無法進行多線程由于GIL,同一時間同一進程只有一個線程在執行,因此采用多進程會有并發的效果,效率高。
2)I/O密集型:多線程效率高,因為多進程的開銷大,創建進程的時間長,且I/O密集型有阻塞狀態,多進程不如多線程的切換速度快,因此多線程來處理I/O密集型問題會效率更高
?