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培训机构:千锋教育。
猜你喜欢LIKE
相关推荐HOT
更多>>Python中使用K-means算法
python中使用K-means算法k-means是机器学习中最常用的聚类算法,关于k-means算法的数学原理、算法、伪码等已有相当丰富的文献,在此不再赘述。1...详情>>
2023-11-14 22:27:42python包和模块的内容整理
python包和模块的内容整理1、包(1)包是一个文件夹,存放多个模块,作用是包含多个模块,本质上仍然是模块,因此包也可以包含在其中。(2)库:与...详情>>
2023-11-14 21:31:01python线程中deque如何使用?
python线程中deque如何使用?1、说明collections.deque类是一种线程安全的数据类型,可以从两端快速添加或删除元素。而且如果你想有一个数据类型...详情>>
2023-11-14 18:22:54python并集是什么意思?
python并集是什么意思?本文教程操作环境:windows7系统、Python3.9.1,DELLG3电脑。以属于A或属于B的元素为元素的集合成为A与B的并集。1、概念...详情>>
2023-11-14 16:44:05热门推荐
python中如何实现列表与字典的相互转换?
沸python sorted中key参数怎么用?
热python中exec()函数如何执行表达式?
热Python中使用K-means算法
新python如何对电脑进行清屏
python包和模块的内容整理
python中scipy.special模块如何使用?
python检测给定的路径是否存在的方法
怎样在python中定义非闭包
python如何画火山图
pythonpickle模块的使用注意
python线程中deque如何使用?
python如何安装pyenv
pythontime模块的时间格式