【Python面試真題】- 在多線程環境中,Python 虛擬機按什么樣的方式執行?
【Python面試真題】- 在多線程環境中,Python 虛擬機按什么樣的方式執行?
1. 設置GIL
2. 切換到一個線程去運行
3. 運行:
a. 指定數量的字節碼指令,或者
b. 線程主動讓出控制(可以調用time.sleep(0))
4. 把線程設置為睡眠狀態
5. 解鎖GIL
6. 再次重復以上所有步驟
在調用外部代碼(如C/C++擴展函數)的時候,GIL 將會被鎖定,直到這個函數結束為止(由于在這期間沒有Python 的字節碼被運行,所以不會做線程切換)。