pythonGIL的原理
python中GIL的原理
1、说明
GIL规定一个Python解释程序只能同时由一个线程控制。
在CPU限制类型和多线程代码中,GIL是一个性能瓶颈。
GIL使Python多线程成为伪并行多线程。
仅CPython解释器上存在GIL。
2、原理
(1)线程1、2、3轮流执行,每一个线程在执行是,都会锁住GIL,以阻止别的线程执行;
同样的,每一个线程执行一段后,会释放GIL,以允许别的线程开始利用资源。
(2)由于古老GIL机制,如果线程2需要在CPU2上执行,它需要先等待在CPU1上执行的线程1释放GIL(记住:GIL是全局的)
(3)如果线程1是因为i/o阻塞让出的GIL,那么线程2必定拿到GIL。但如果线程1是因为timerticks计数满100ticks(大概对应了1000个bytecodes)让出GIL,那么这个时候线程1和线程2公平竞争。
(4)但要命的是,在Python2.x,线程1不会动态的调整自身的优先级,所以很大概率下次被选中执行的还是线程1,在很多个这样的选举周期内,线程2只能安静的看着线程1拿着GIL在CPU1上欢快的执行。
(5)极端一点的情况下,比如线程1使用了whileTrue在CPU1上执行,那就真是“一核有难,八核围观”了。
以上就是python中GIL的原理介绍,希望能对大家有所帮助。如果想要了解更多Python相关知识,请关注IT培训机构:千锋教育。
相关推荐HOT
更多>>pythonfor循环是什么
pythonfor循环是什么在做遍历的时候,对于一些数据的反复循环执行,我们会用到for循环的语句。可以说这是新手入门必学的语句之一,在很多基础循...详情>>
2023-11-13 07:46:36pythoncontextmanager()的转换
python中contextmanager()的转换1、说明当发出请求时,requests库会在将请求实际发送到目标服务器之前准备该请求。请求准备包括像验证头信息和...详情>>
2023-11-13 06:34:35python使用items()遍历键值对
python使用items()遍历键值对字典可以用来存储各种方式的信息,所以有很多方式可以通过字典的所有键值对、键或值。说明1、即使通过字典,键值对...详情>>
2023-11-13 04:24:15python实例方法中self的作用
python实例方法中self的作用说明1、无论是创建类的构造方法还是实例方法,最少要包含一个参数self。2、通过实例的self参数与对象进行绑定,程序...详情>>
2023-11-13 03:46:48