开发者社区> 问答> 正文

python中的GIL具体是什么?

python中的GIL具体是什么?

展开
收起
游客vwuxaq6iqaowc 2021-10-31 19:04:29 441 0
1 条回答
写回答
取消 提交回答
  • Global Interpreter Lock(全局解释器锁)

    Python代码的执行由python虚拟机(也叫解释器主循环,CPython版本)来控制,Python在设计之初就考虑到要在解释器的主循环中,同时只有一个线程在执行,即任意时刻,只有一个线程在解释器中运行。对Python虚拟机的访问由全局解释器锁(GIL)来控制,正是这个锁能保证同一时刻只有一个线程在运行。
    

    在多线程环境中,Python虚拟机按以下方式执行:

    1.设置GIL

    2.切换到一个线程去运行

    3.运行:

    a.指定数量的字节码指令,或者
    
    b.线程主动让出控制(可以调用time.sleep(0))
    

    4.把线程设置为睡眠状态

    5.解锁GIL

    6.再次重复以上所有步骤

    再调用外部代码(如C/C++扩展函数)的时候,GIL讲会被锁定,直到这个函数结束为止(由于在这期间没有Python的字节码被运行,所以不会做线程切换)。

    2021-10-31 19:04:52
    赞同 展开评论 打赏
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
From Python Scikit-Learn to Sc 立即下载
Data Pre-Processing in Python: 立即下载
双剑合璧-Python和大数据计算平台的结合 立即下载