• 技术文章 >Python技术 >Python基础教程

    python GIL锁的底层原理探究

    小妮浅浅小妮浅浅2021-07-07 09:53:46原创2817

    释放GIL锁原理分析

    1、在单核CPU下,这种情况并不特别糟糕。由于只有一个CPU,CPU的利用率非常高。

    2、在多核CPU下,由于GIL锁的整体特性,无法发挥多核特性,GIL锁大大降低了多线程任务的效率。

    尽管全部释放GIL锁,但是这两种情况是不同的。例如,Thread1遇到IO操作释放GIL,由Thread2和Thread3来竞争GIL锁,Thread1将不再参与这场竞争。假如是Thread1因为TimeTick过期而释放GIL(大多数是CPU密集任务),那么三个线程就能同时竞争GIL锁,这可能会导致Thread1在竞争中获胜并重新执行。

    线程释放GIL锁有两种情况

    一种是IO操作,另一种是TimeTick过期。IO操作很好理解,比如发出http请求,等待响应。那么什么是TimeTick过期呢?TimeTick规定了线程的最长执行时间,超过时间后自动释放GIL锁。Python3之后,间隔时间约为15毫秒。

    以上就是python GIL锁的底层原理探究,希望对大家有所帮助。更多Python学习指路:python基础教程

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

    专题推荐:python gil
    上一篇:python如何实现自定义异常类 下一篇:python快速排序实现元素递增

    相关文章推荐

    • python线程中的GIL如何使用?• GIL在Python多线程的应用• python中GIL的原理• Python获取GIL锁的流程• Python中如何切换GIL?• python gil是什么• python用circle函数画兔子的方法• python中waitKey如何使用• python traceback如何输出异常• python如何实现自定义异常类

    全部评论我要评论

    © 2021 Python学习网 苏ICP备2021003149号-1

  • 取消发布评论
  • 

    Python学习网