【发布时间】:2018-03-03 23:40:44
【问题描述】:
GIL 锁定核心,使线程无法并行运行。为什么会这样? 网上关于这方面的资料很少。
【问题讨论】:
-
线程安全很难,他们从一开始就没有为此设计。现在让它线程安全更加困难。
标签: python multithreading parallel-processing thread-safety gil
GIL 锁定核心,使线程无法并行运行。为什么会这样? 网上关于这方面的资料很少。
【问题讨论】:
标签: python multithreading parallel-processing thread-safety gil
在非常基本的术语中,GIL 会阻止内存损坏,如果没有 GIL,多个线程可能会同时执行,从而导致不可预测的输出。
在 CPython 中,全局解释器锁或 GIL 是一个互斥锁,用于保护对 Python 对象的访问,防止多个线程同时执行 Python 字节码。这个锁是必要的,主要是因为 CPython 的内存管理不是线程安全的。 (但是,由于 GIL 的存在,其他功能已经发展到依赖于它强制执行的保证。)
正如您将看到的,有些实现不使用 GIL,例如 Jython 和 IronPython。
Wikipedia that deals with this topic.上也有一篇很有帮助的文章
全局解释器锁 (GIL) 是由编程语言解释器线程持有的互斥锁,用于避免与其他线程共享非线程安全的代码。在使用 GIL 的实现中,每个解释器进程始终有一个 GIL。
【讨论】: