GIL锁定核心,以便线程不能并行运行。为什么会这样? 关于这个网上的信息很少。
答案 0 :(得分:1)
在非常基本的术语中,GIL会停止内存损坏,如果没有GIL,多个线程可能会立即执行,从而导致不可预测的输出。
在CPython中,全局解释器锁或GIL是一个互斥锁,用于保护对Python对象的访问,防止多个线程同时执行Python字节码。这种锁是必要的,主要是因为CPython的内存管理不是线程安全的。 (但是,由于存在GIL,其他功能已经增长,取决于它所强制执行的保证。)
正如您将看到的那样,实现中不使用GIL,如Jython和IronPython。
Wikipedia that deals with this topic.
上还有一篇非常有用的文章全局解释器锁(GIL)是由编程语言解释器线程持有的互斥锁,以避免共享与其他线程不是线程安全的代码。在使用GIL的实现中,每个解释器进程总是有一个GIL。