知行编程网知行编程网  2022-12-22 22:30 知行编程网 隐藏边栏  4 
文章评分 0 次,平均分 0.0
导语: 本文主要介绍了关于Python中如何切换GIL?的相关知识,包括在设置中切换输入设备,以及运行中如何从D档切换到L档这些编程知识,希望对大家有参考作用。

如何在 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允许其他线程在执行块型系统调用之前执行(Py_BEGIN_ALLOW_THREADS),然后重试获取GIL(Py_END_ALLOW_THREADS)。

#define Py_BEGIN_ALLOW_THREADS { \
                        PyThreadState *_save; \
                        _save = PyEval_SaveThread();


本文教程操作环境:windows7系统、Python 3.9.1,DELL G3电脑。

本文为原创文章,版权归所有,欢迎分享本文,转载请保留出处!

知行编程网
知行编程网 关注:1    粉丝:1
这个人很懒,什么都没写
扫一扫二维码分享