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的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。