1. 程式人生 > >Python真正多執行緒之殤——GIT全域性解釋鎖

Python真正多執行緒之殤——GIT全域性解釋鎖

-

多執行緒的理解:

多程序和多執行緒都可以執行多個任務,執行緒是程序的一部分。執行緒的特點是執行緒之間可以共享記憶體和變數,資源消耗少(不過在Unix環境中,多程序和多執行緒資源排程消耗差距不明顯,Unix排程較快),缺點是執行緒之間的同步和加鎖比較麻煩。

Python多執行緒的缺陷:
Python多執行緒並不能真正能發揮作用,因為在Python中,有一個GIL,即全域性解釋鎖,該鎖的存在保證在同一個時間只能有一個執行緒執行任務,也就是多執行緒並不是真正的併發,只是交替得執行。假如有10個執行緒炮在10核CPU上,當前工作的也只能是一個CPU上的執行緒。

導致了程式應用了多執行緒下效能反而下將的問題。

Python多執行緒的應用場景:
雖然Python多執行緒有缺陷,總被人說成是雞肋,但也不是一無用處,它很適合用在IO密集型任務中。I/O密集型執行期間大部分是時間都用在I/O上,如資料庫I/O,較少時間用在CPU計算上。因此該應用場景可以使用Python多執行緒,當一個任務阻塞在IO操作上時,我們可以立即切換執行其他執行緒上執行其他IO操作請求。

總結:Python多執行緒在IO密集型任務中還是很有用處的,而對於計算密集型任務,應該使用Python多程序。

-

拓展:python非同步多執行緒:https://blog.csdn.net/weixin_41827162/article/details/84104421

以我的理解,上文只是同步多執行緒,非同步多執行緒應該能解決任務阻塞的問題。

-