【问题标题】:Why is the Python interpreter not thread safe?为什么 Python 解释器不是线程安全的?
【发布时间】:2018-03-03 23:40:44
【问题描述】:

GIL 锁定核心,使线程无法并行运行。为什么会这样? 网上关于这方面的资料很少。

【问题讨论】:

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


【解决方案1】:

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

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

documentation

正如您将看到的,有些实现不使用 GIL,例如 Jython 和 IronPython。

Wikipedia that deals with this topic.上也有一篇很有帮助的文章

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-11-20
    • 2013-10-11
    • 2020-10-10
    • 1970-01-01
    • 1970-01-01
    • 2016-08-14
    • 2023-03-12
    • 1970-01-01
    相关资源
    最近更新 更多