美文网首页Python与数据分析
【Python学习笔记】GIL(全局解释器锁)

【Python学习笔记】GIL(全局解释器锁)

作者: 清梦载星河 | 来源:发表于2020-03-05 13:04 被阅读0次

一、什么是GIL

GIL,是最流行的 Python 解释器 CPython 中的一个技术术语。它的意思是全局解释器锁,本质上是类似操作系统的 Mutex。每一个 Python 线程,在 CPython 解释器中执行时,都会先锁住自己的线程,阻止别的线程执行。CPython会轮流执行线程,模拟真正并行的线程,产生“伪并行”。

为什么要有GIL

  1. 避免内存管理的复杂风险;
  2. 因为CPython使用大量的C语言库,而大部分C语言库都不是线程安全的。

二、GIL的工作流程

假设有两个线程 thread 1 和 thread 2 。thread 1 先执行,遇到需要等候IO操作的时候,thread 1 会释放GIL;thread 2 开始执行,thread 2开始执行时会锁住GIL,以阻止其他线程执行。这就是一个简单的GIL工作流程。

CPython存在一种机制,名叫“check_interval”,这个机制会每隔一段时间轮询检查GIL的锁住情况,并强制当前线程释放GIL。这样能够保证GIL不会被某个线程独占。

三、如何绕过 GIL

古话说,“射人先射马,擒贼先擒王。”GIL 应 CPython而生,所以只要用户的程序没有使用CPython就绕过GIL了。如今有一些Python库是直接用C语言来实现的,比如 Numpy。借助好这些第三方库,就能绕过GIL实现更好的性能。

大部分情况下GIL是不需要过多考虑的,如果对性能真的有超级严苛的要求,那还请你放过Python,它只是一个解释型语言。

相关文章

  • Python 并发总结

    0x01 GIL锁 C语言写的Python解释器存在全局解释器锁GIL(Global Interpreter Lo...

  • python多线程

    python基础之多线程锁机制 GIL(全局解释器锁) GIL并不是Python的特性,它是在实现Python解析...

  • python中的GIL详解

    原文链接 GIL并不是Python的特性,Python完全可以不依赖于GIL。 ​ GIL 锁: 全局解释器锁,作...

  • Python的GIL

    Python的GIL是什么# GIL即全局解释器锁(Global Interpreter Lock) 首先我认为,...

  • Python day28_GIL 深拷贝浅拷贝

    GIL(全局解释器锁) GIL面试题如下 描述Python GIL的概念, 以及它对python多线程的影响?编写...

  • GIL

    一,GIL的概念 python全局解释器锁。 二,GIL产生的原因 GIL 并不是 Python 语言的特性,它是...

  • 008 12. python提高-1

    12.1. GIL GIL(全局解释器锁) GIL面试题如下 描述Python GIL的概念, 以及它对pytho...

  • python GIL 详解

    GIL介绍 python全局解释器锁(global interpreter lock, GIL)限制了任何时候只能...

  • Python 经验 - 多线程与多进程

    多线程 GIL GIL(Global Interpreter Lock)即全局解释器锁。 在Python中一个线程...

  • GIL和多进程,多线程

    1、GIL是什么?GIL的全称是Global Interpreter Lock(全局解释器锁),来源是python...

网友评论

    本文标题:【Python学习笔记】GIL(全局解释器锁)

    本文链接:https://www.haomeiwen.com/subject/mwcxrhtx.html