小编典典

CPython 中的全局解释器锁 (GIL) 是什么?

all

什么是全局解释器锁,为什么会出现问题?

从 Python 中删除 GIL 引起了很多争论,我想了解为什么这如此重要。我自己从来没有写过编译器或解释器,所以不要吝啬细节,我可能需要他们理解。


阅读 67

收藏
2022-05-16

共1个答案

小编典典

Python 的 GIL 旨在序列化从不同线程对解释器内部的访问。在多核系统上,这意味着多线程不能有效地利用多核。(如果 GIL
没有导致这个问题,大多数人不会关心 GIL -
它只是因为多核系统的日益普及而被提出来。)

请注意,Python 的 GIL 只是 CPython(参考实现)的真正问题。Jython 和 IronPython 没有 GIL。作为 Python
开发人员,除非您正在编写 C 扩展,否则您通常不会遇到 GIL。C 扩展编写者需要在他们的扩展执行阻塞 I/O 时释放 GIL,以便 Python
进程中的其他线程有机会运行。

2022-05-16