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

问题描述 投票:1回答:1

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

python multithreading parallel-processing thread-safety gil
1个回答
1
投票

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

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

documentation

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

关于Wikipedia that deals with this topic.的文章也很有帮助

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

© www.soinside.com 2019 - 2024. All rights reserved.