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