【Python面試題】簡單談下GIL:
Global Interpreter Lock(全局解釋器鎖)
Python代碼的執行由Python 虛擬機(也叫解釋器主循環,CPython版本)來控制,Python 在設計之初就考慮到要在解釋器的主循環中,同時只有一個線程在執行,即在任意時刻,只有一個線程在解釋器中運行。對Python 虛擬機的訪問由全局解釋器鎖(GIL)來控制,正是這個鎖能保證同一時刻只有一個線程在運行。
在多線程環境中,Python 虛擬機按以下方式執行:
- 設置GIL
- 切換到一個線程去運行
- 運行:
? ??a. 指定數量的字節碼指令,或者
? ? b. 線程主動讓出控制(可以調用time.sleep(0)) - 把線程設置為睡眠狀態
- 解鎖GIL
- 再次重復以上所有步驟