python如何切換GIL?
python中如何切換GIL?
1、通過判斷指令計數器切換GIL
(1)python的解釋器是在一個大的循環中逐個解析字節碼指令;
(2)每次循環開始都會檢查一下_Py_Ticker的值。
{
...
for(;;)
...
if(--_Py_Ticker<0){
...
_Py_Ticker=_Py_CheckInterval;
...
if(interpreter_lock){
...
PyThread_release_lock(interpreter_lock);
PyThread_acquire_lock(interpreter_lock,1);
}
}
...
switch(opcode){
case:...
}
}
}
2、IO阻塞之前切換GIL
Python允許在執行block型的systemcall之前允許其他線程執行(Py_BEGIN_ALLOW_THREADS),然后再重新嘗試獲取GIL(Py_END_ALLOW_THREADS)。
#definePy_BEGIN_ALLOW_THREADS{\
PyThreadState*_save;\
_save=PyEval_SaveThread();
以上就是Python中切換GIL的方法,希望對大家有所幫助。更多Python學習推薦:請關注IT培訓機構:千鋒教育。

相關推薦HOT
更多>>
python怎么生成隨機數
以下實例演示了python如何生成一個隨機數:#生成0~9之間的隨機數#導入random(隨機數)模塊importrandomprint(random.randint(0,9))執行以上代碼...詳情>>
2023-11-07 17:09:17
python如何刪除空格
python中的字符串方法提供了如下常用的方法來刪除空白:strip():刪除字符串前后的空白。lstrip():刪除字符串前面(左邊)的空白。rstrip():刪...詳情>>
2023-11-07 14:57:44
python怎么調用實例方法
在Python的類體中定義的方法默認都是實例方法,也示范了通過對象來調用實例方法。但要提醒大家的是,Python的類在很大程度上可看做是一個獨立的...詳情>>
2023-11-07 14:17:57
python怎么創建mysql數據庫連接
python數據庫接口支持非常多的數據庫,你可以選擇適合你項目的數據庫:GadFlymSQLMySQLPostgreSQLMicrosoftSQLServer2000InformixInterbase詳情>>
2023-11-07 09:02:44