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
更多>>
pythonpython对大小写敏感吗?
python对大小写是敏感的,也就是说,python中是区分大小写的。Python的变量名是区分大小写的,例如:name和Name就是两个变量名,而非相同变量。...详情>>
2023-11-09 23:57:19
python单引号怎么打
实际上在Python中'...'和"..."是完全一样的,但不能出现'..."和"...'这种情况。而将其混合使用会有很多意想不到的效果:具体规...详情>>
2023-11-09 22:41:18
pythonpop什么意思
python中的pop:pop()函数的作用就是用来移除列表中的一个元素(默认最后一个元素),并且返回该元素的值。语法pop()方法语法:list.pop(obj=list...详情>>
2023-11-09 20:54:42
python怎么循环输入
python中的循环语句,可使用for循环,或者while循环。两者的区别是,for循环要求提前知道要循环的次数,而while循环只要满足条件就会循环,直到...详情>>
2023-11-09 16:48:15