新聞中心
這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
創(chuàng)新互聯(lián)Python教程:Python中如何切換GIL?
1、通過判斷指令計數(shù)器切換GIL

成都創(chuàng)新互聯(lián)主營五指山網(wǎng)站建設(shè)的網(wǎng)絡(luò)公司,主營網(wǎng)站建設(shè)方案,成都app軟件開發(fā)公司,五指山h5成都小程序開發(fā)搭建,五指山網(wǎng)站營銷推廣歡迎五指山等地區(qū)企業(yè)咨詢
(1)python的解釋器是在一個大的循環(huán)中逐個解析字節(jié)碼指令;
(2)每次循環(huán)開始都會檢查一下_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允許在執(zhí)行block型的system call之前允許其他線程執(zhí)行(Py_BEGIN_ALLOW_THREADS),然后再重新嘗試獲取GIL(Py_END_ALLOW_THREADS)。
#define Py_BEGIN_ALLOW_THREADS { \
PyThreadState *_save; \
_save = PyEval_SaveThread();以上就是Python中切換GIL的方法,希望對大家有所幫助。更多Python學(xué)習(xí)推薦:python教學(xué)
本文教程操作環(huán)境:windows7系統(tǒng)、Python 3.9.1,DELL G3電腦。
當(dāng)前名稱:創(chuàng)新互聯(lián)Python教程:Python中如何切換GIL?
標(biāo)題網(wǎng)址:http://fisionsoft.com.cn/article/dpdossi.html


咨詢
建站咨詢
