什么是全局解释器锁,为什么会出现问题?
从 Python 中删除 GIL 引起了很多争论,我想了解为什么这如此重要。我自己从来没有写过编译器或解释器,所以不要吝啬细节,我可能需要他们理解。
Python 的 GIL 旨在序列化从不同线程对解释器内部的访问。在多核系统上,这意味着多线程不能有效地利用多核。(如果 GIL 没有导致这个问题,大多数人不会关心 GIL - 它只是因为多核系统的日益普及而被提出来。)
请注意,Python 的 GIL 只是 CPython(参考实现)的真正问题。Jython 和 IronPython 没有 GIL。作为 Python 开发人员,除非您正在编写 C 扩展,否则您通常不会遇到 GIL。C 扩展编写者需要在他们的扩展执行阻塞 I/O 时释放 GIL,以便 Python 进程中的其他线程有机会运行。