千锋教育-做有情怀、有良心、有品质的职业教育机构

当前位置:首页  >  技术干货  >  Python技术干货  > pythongil是什么

pythongil是什么

来源:千锋教育
发布时间:2023-11-15 02:24:22
分享

pythongil是什么

1、说明

是全局解释器锁,每个线程在执行时候都需要先获取GIL,保证同一时刻只有一个线程可以执行代码,即同一时刻只有一个线程使用CPU,也就是说多线程并不是真正意义上的同时执行。

2、产生原因

(1)GuidovanRossum(吉多·范罗苏姆)创建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的时间)

以上就是pythongil的介绍,大家在了解基本的用法后,可以去找一些gil的实例进行练习。更多Python学习教程请关注IT培训机构:千锋教育。

声明:本站部分稿件版权来源于网络,如有侵犯版权,请及时联系我们。

相关推荐

  • pythonnamedtuple怎样定义一个类 pythonnamedtuple怎样定义一个类1、namedtuple是一个非常简单的类别,通过它我们可以很容易地定义我们想要的类别。它的使用非常简单。例如,如果我们想定义一个学生类别,这个类别个字段
  • pythondeque的两大优点 pythondeque的两大优点1、优点(1)deque接收GIL管理,线程安全。list没有GIL锁,所以线程不安全。也就是说,在并发场景中,list可能会导致一致性问题,而deque不会。(2)d
  • pythonCounter的使用 pythonCounter的使用1、将一个list传入Counter中作为参数,它会自动为我们替当中的每个元素计数。如果我们要筛选topK,也非常简单,它为我们提供了most_common方法,我们只
  • python递归算法是什么 python递归算法是什么1、概念递归算法是直接或间接调用自己的函数或方法的算法。一般来说,递归算法的本质是将问题分解为规模缩小的同类问题的子问题,递归调用方法表示问题的解决。2、特征(1)一个问题的
  • python如何用python爬取数据 如何用python爬取数据1、find_all()的爬取find_all():提取所有符合要求的数据,搜索当前tag的所有tag子节点,并判断是否符合过滤器的条件。2、用法bs对象.find_all(
  • python自动化运维怎么连接 python自动化运维怎么连接1、概念自动化运维是自动化大量重复操作,使工具和系统代替人工自动完成具体运输维护工作,释放生产力,提高效率,降低运输维护成本。2、自动化运维模块paramiko是基于SS