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