当前位置: 首页 > 图灵资讯 > 行业资讯> python中GIL的原理

python中GIL的原理

来源:图灵python
时间: 2024-08-27 13:38:20

1、说明

GIL规定,Python解释程序只能同时由一个线程控制。

GIL是CPU限制类型和多线程代码的性能瓶颈。

GIL使Python多线程成为伪并行多线程。

GIL存在于CPython解释器中。

2、原理

(1)线程1、2、3轮流执行,每个线程在执行时都会锁定GIL,以防止其他线程执行;

同样,为了允许其他线程开始使用资源,GIL将在每个线程执行一段后释放。

(2)由于古老的GIL机制,如果线程2需要在CPU2上执行,则需要等待在CPU1上执行的线程1释放GIL(记住:GIL是全局)

(3)如果线程1是因为 i/o 阻塞让出的GIL,那么线程2必须得到GIL。但如果线程1是因为timer ticks计数满100ticks(大概对应1000个bytecodes)让GIL,那么此时线程1和线程2公平竞争。

(4)但要命的是,在Python 2.x, 线程1不会动态地调整自己的优先级,所以很有可能下次选择或线程1。在许多这样的选举周期中,线程2只能静静地看着线程1,在CPU中使用GIL 一上欢快执行。

(5)在极端情况下,例如线程1使用while True在CPU1上执行,那真是“一核难,八核围观”。

以上是python中GIL的原理介绍,希望对大家有所帮助。更多Python学习指导:python基础教程

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