Python中怎么切换GIL

这篇文章给大家分享的是有关Python中怎么切换GIL的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。

创新互联公司专业为企业提供珠海网站建设、珠海做网站、珠海网站设计、珠海网站制作等企业网站建设、网页设计与制作、珠海企业网站模板建站服务,十余年珠海做网站经验,不只是建网站,更提供有价值的思路和整体网络服务。

python是什么意思

Python是一种跨平台的、具有解释性、编译性、互动性和面向对象的脚本语言,其最初的设计是用于编写自动化脚本,随着版本的不断更新和新功能的添加,常用于用于开发独立的项目和大型项目。

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型的system call之前允许其他线程执行(Py_BEGIN_ALLOW_THREADS),然后再重新尝试获取GIL(Py_END_ALLOW_THREADS)。

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

感谢各位的阅读!关于“Python中怎么切换GIL”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!


当前文章:Python中怎么切换GIL
分享URL:http://scyanting.com/article/jpcjge.html