GIL线程全局锁解析

1.GIL概述

GIL ( Global Interperter Lock ) 称作全局解释器锁。首先需要明确一点,我们所讲的 GIL 并不是 Python 语言的特性,它是在实现 Python 解释器时引用的一个概念。GIL 只在CPython 解释器上存在。

Python为了保证线程安全而采取的独立线程运行的限制,说白了就是一个核只能在同一时间运行一个线程.对于io密集型任务,python的多线程起到作用,但对于cpu密集型任务,python的多线程几乎占不到任何优势,还有可能因为争夺资源而变慢。

解决办法就是多进程和下面的协程(协程也只是单CPU,但是能减小切换代价提升性能)。

2.GIL优缺点

优点:
GIL 是 Python 解释层面的锁,即Python为了保证线程安全而采取的独立线程运行的限制,说白了就是一个核只能在同一时间运行一个线程解决解释器中多个线程的竞争资源问题。
缺点:
但是这仅仅是对io密集型任务,python的多线程起到作用,但对于cpu密集型任务,python的多线程几乎占不到任何优势,还有可能因为争夺资源而变慢。

3.如何改善 GIL 产生的问题

因为 GIL 锁是解释器层面的锁,无法去除 GIL 锁在执行程序时带来的问题。只能去改善。

  1. 更换更高版本的解释器,比如3.6,从3.2版本开始,Python对解释做了优化,但并不理想;
  2. 更换解释器,比如 Jython,但是由于比较小众,支持的模块较少,导致开发效率降低;
  3. Python为了解决程序使用多核的问题,使用多进程替代多线程 ,或者是用协程(协程也只是但cpu,但是能减少切换代价提升性能)。
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 一. 操作系统概念 操作系统位于底层硬件与应用软件之间的一层.工作方式: 向下管理硬件,向上提供接口.操作系统进行...
    月亮是我踢弯得阅读 6,125评论 3 28
  • 转一篇关于Python GIL的文章。归纳一下,CPU的大规模电路设计基本已经到了物理意义的尽头,所有厂商们都开始...
    SeanCheney阅读 11,270评论 0 12
  • 必备的理论基础 1.操作系统作用: 隐藏丑陋复杂的硬件接口,提供良好的抽象接口。 管理调度进程,并将多个进程对硬件...
    drfung阅读 3,713评论 0 5
  • 进程是cpu资源分配的最小单位,线程是cpu调度的最小单位。以前进程既是资源分配也是调度的最小单位,后来为了更合理...
    nine_9阅读 681评论 0 1
  • Python被人诟病最多的大概就是性能差,在这里讲一下 Python 的多进程,多线程与协程。首先声明这不是教程,...
    橙子丨Sunty阅读 1,843评论 0 8

友情链接更多精彩内容