1、说明
它是一个全局解释器锁。每个线程在执行的时候需要先获取GIL,这样同一时间只能有一个线程执行代码,也就是只有一个线程同时使用CPU,也就是说多线程不执行同时在真正意义上。 .
2、产生原因
(1)Guido van Rossum(吉多·范罗苏姆)创建python时就只考虑到单核cpu。
(2) 解决多线程间的数据完整性和状态同步,最简单的方法自然是加锁。于是就有了GIL,超级大锁。
(3)cpython解析只允许拥有GIL全局解析器锁才能运行程序。
(4)保证同一个时刻只允许一个线程可以使用cpu。
(5)以前写cpython解析器的时候就考虑一个cpu情况。
(6) 由于大量的程序开发人员接受了这种机制,现在代码量越来越大,通过C代码解决这个问题已经不容易了。
3、gil锁的释放时机
(1) 遇到i/o操作等idle时间,gil会在cpu空闲时释放
(2) 将有一个特殊的刻度用于计数。一旦ticks值达到100,此时释放Gil锁,线程开始竞争Gil锁(注:
(3)可以设置ticks的值来延长或减少获取Gil锁的线程使用cpu的时间)
以上就是python gil的介绍,大家在了解基本的用法后,可以去找一些gil的实例进行练习。
更多Python学习指路:
(推荐操作系统:windows7系统、Python 3.9.1,DELL G3电脑。)
本文为原创文章,版权归知行编程网所有,欢迎分享本文,转载请保留出处!
你可能也喜欢
- ♥ 厉害了,Python300行代码实现俄罗斯方块03/27
- ♥ python不能安装pip怎么办09/27
- ♥ 如何检查你的计算机上是否安装了python08/27
- ♥ python中的reduce函数是如何实现阶乘的?11/13
- ♥ 如何在python中调用具有可变长度参数的函数?12/27
- ♥ 一篇文章看懂Python代码的编写规范12/09
内容反馈