为什么Python解释器不是线程安全的?

时间:2018-03-03 23:40:44

标签: python multithreading parallel-processing thread-safety gil

GIL锁定核心,以便线程不能并行运行。为什么会这样? 关于这个网上的信息很少。

1 个答案:

答案 0 :(得分:1)

在非常基本的术语中,GIL会停止内存损坏,如果没有GIL,多个线程可能会立即执行,从而导致不可预测的输出。

  

在CPython中,全局解释器锁或GIL是一个互斥锁,用于保护对Python对象的访问,防止多个线程同时执行Python字节码。这种锁是必要的,主要是因为CPython的内存管理不是线程安全的。 (但是,由于存在GIL,其他功能已经增长,取决于它所强制执行的保证。)

请参阅documentation

正如您将看到的那样,实现中不使用GIL,如Jython和IronPython。

Wikipedia that deals with this topic.

上还有一篇非常有用的文章
  

全局解释器锁(GIL)是由编程语言解释器线程持有的互斥锁,以避免共享与其他线程不是线程安全的代码。在使用GIL的实现中,每个解释器进程总是有一个GIL。