港服(Server.HK)Python教程:python gil是什么

1、说明 是全局解释器锁,每个线程在执行时候都需要先获取GIL,保证同一时刻只有一个线程可以执行代码,即同一时刻只有一个…

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操作这种 会有时间空闲情况 造成cpu闲置的情况会释放Gil

(2)会有一个专门ticks进行计数 一旦ticks数值达到100 这个时候释放Gil锁 线程之间开始竞争Gil锁(说明:

(3)ticks这个数值可以进行设置来延长或者缩减获得Gil锁的线程使用cpu的时间)

以上就是python gil的介绍,大家在了解基本的用法后,可以去找一些gil的实例进行练习。更多Python学习指路:港服(Server.HK)python教程

(推荐操作系统:windows7系统、Python 3.9.1,DELL G3电脑。)

为您推荐

港服(Server.HK)Python教程:如何实现对Python中列表的排序?

对List进行排序,Python提供了两个方法 方法1.用List的内建函数list.sort进行排序 list.sor...

港服(Server.HK)Python教程:python迭代器中的函数整理

1、可以连接迭代器的函数 chain:按顺序将多个迭代器连接成一个迭代器。 Cycle:重复迭代器的所有元素。 Tee:...

港服(Server.HK)Python教程:用Python举例实现逆波兰表达式

逆波兰表达式是编译原理中的一种基本表达式,利用Python语言也可以实现逆波兰表达式的输出,这里举例实践说明: 什么是逆...

Python 程序:检查给定字符串是否为回文

港服(Server.HK)Python教程: 用一个实例写一个 Python 程序来检查给定的字符串是不是回文。在 Py...

港服(Server.HK)Python教程:python3判断字典中key是否存在

今天来说一下如何判断字典中是否存在某个key,一般有两种通用做法,下面为大家来分别讲解一下: 第一种方法:使用自带函数实...
返回顶部