Python的GIL是什么?

GIL是什么

Python官方解释器(CPython解释器)在内部不是线程安全的,因此它有一个全局解释器锁(Global Interpreter Lock简称GIL),它使得在任何时刻都只有一个线程在执行Python字节码。

这也是使得标准版本的Python并不能实现真正的多线程并发的直接原因。简单来说就是,一个Python进程永远不能在同一时刻使用多个CPU核心。

In CPython, the global interpreter lock, or GIL, is a mutex that prevents multiple native threads from executing Python bytecodes at once. This lock is necessary mainly because CPython’s memory management is not thread-safe. (However, since the GIL exists, other features have grown to depend on the guarantees that it enforces.)

GIL会带来什么

一起来看一个例子

计算耗时

然后我们count_down两次,看看耗时情况

工作很好,但是老板不高兴。他要我们加快速度。我们怎样才能更快呢?我们使用线程使这两个函数调用并行运行,可以吗?理论上,并行运行一次函数应该和运行一次一样多。因为,这两个函数调用并行运行。让我们尝试在不同线程中调用函数两次:

是GIL导致呢?

如何解决这个问题?

尝试使用multiprocessing模块

想了解更多的内容?请继续关注。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20181210G1NA8F00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券