释放GIL锁原理分析
1、这种情况在单核CPU下并不特别糟糕。由于只有一个CPU,CPU的利用率很高。
2、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电脑。