Python基礎(十三) 為什么說python多線程沒有真正實現多現程


Python中的多線程沒有真正實現多現程! 為什么這么說,我們了解一個概念,全局解釋器鎖(GIL)。

Python代碼的執行由Python虛擬機(解釋器)來控制。

Python在設計之初就考慮要在主循環中,同時只有一個線程在執行,

就像單CPU的系統中運行多個進程那樣,內存中可以存放多個程序,

但任意時刻,只有一個程序在CPU中運行。

同樣地,雖然Python解釋器可以運行多個線程,只有一個線程在解釋器中運行。

 

對Python虛擬機的訪問由全局解釋器鎖(GIL)來控制,正是這個鎖能保證同時只有一個線程在運行。在多線程環境中,Python虛擬機按照以下方式執行。

1.設置GIL。

2.切換到一個線程去執行。

3.運行。

4.把線程設置為睡眠狀態。

5.解鎖GIL。

6.再次重復以上步驟。

 python 每執行100個字節碼,GIL鎖就會解鎖一次,讓其它線程執行,所以,python多線程環境,是交替執行,上下文切換,並沒有同一時刻執行代碼.


免責聲明!

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



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