知行编程网知行编程网  2022-12-22 20:30 知行编程网 隐藏边栏  0 
文章评分 0 次,平均分 0.0
导语: 本文主要介绍了关于python中GIL的原理的相关知识,包括python中divmod,以及chatgpt 翻译这些编程知识,希望对大家有参考作用。

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因为timer ticks计数达到100个ticks(对应大约1000个字节码)而放弃GIL,那么此时线程1和线程2将公平竞争。

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

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

以上就是python中GIL的原理

介绍,希望能对大家有所帮助。

更多Python学习指路:


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

本文为原创文章,版权归所有,欢迎分享本文,转载请保留出处!

知行编程网
知行编程网 关注:1    粉丝:1
这个人很懒,什么都没写
扫一扫二维码分享