python3 gil锁,python中gil锁和线程锁

  python3 gil锁,python中gil锁和线程锁

  

  释放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规定了线程的最长执行时间,超过时间后自动释放GIL锁。Python3之后,间隔时间约为15毫秒。?的过期时间

  以上是对python GIL锁底层原理的探索。希望对大家有帮助。更多python学习方向:Python基础课程

  本教程运行环境:windows7系统,Python 3.9.1,DELL G3电脑。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: