Python中如何切换GIL?

  • 更新时间:2021-07-06 09:42:41
  • 编辑:麴俊健
为网友们分享了相关的编程文章,网友寇烨然根据主题投稿了本篇教程内容,涉及到Python相关内容,已被779网友关注,下面的电子资料对本篇知识点有更加详尽的解释。

参考资料

正文内容

给大家整理一篇不错的python文章,感觉很有用处,重新编辑了一下发到本站,觉得好就请收藏下。

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型的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电脑。

相关教程

  • python3 中的字符串(单引号、双引号、三引号)以及字符串与数字的运算

    这篇文章主要介绍了python3 中的字符串(单引号、双引号、三引号)以及字符串与数字的运算,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友

    发布时间:2019-09-09

  • Python是如何编译运行

    这儿的表述实行是相对性于编译实行来讲的。大家都了解,应用C/C++这类的编译性語言撰写的程序,是必须从源代码转化成电子计算机应用的机器语言,历经连接器连接以后产生了二进制的可执行文件。运行该程序的情况下,就可以把二进制程序从电脑硬盘加载到运行内存中并运行。 可是针对Python来讲,python源代码不用编译成二进制代码,它能够立即从源码运行程序。在我们运行python文档程序的情况下,python解释器将源码变换为字节码,随后再由python解

    发布时间:2020-05-13

用户留言