创新互联Python教程:Python中如何切换GIL?
1、通过判断指令计数器切换GIL

成都创新互联主营五指山网站建设的网络公司,主营网站建设方案,成都app软件开发公司,五指山h5成都小程序开发搭建,五指山网站营销推广欢迎五指山等地区企业咨询
(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型的system call之前允许其他线程执行(Py_BEGIN_ALLOW_THREADS),然后再重新尝试获取GIL(Py_END_ALLOW_THREADS)。
#define Py_BEGIN_ALLOW_THREADS { \
PyThreadState *_save; \
_save = PyEval_SaveThread();以上就是Python中切换GIL的方法,希望对大家有所帮助。更多Python学习推荐:python教学
本文教程操作环境:windows7系统、Python 3.9.1,DELL G3电脑。
网页名称:创新互联Python教程:Python中如何切换GIL?
转载来于:http://www.jxjierui.cn/article/dpdossi.html


咨询
建站咨询
