一尘不染

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

python

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

从Python删除GIL周围已经产生了很多噪音,我想了解为什么这是如此重要。我自己从未写过编译器或解释器,所以不要节俭,我可能需要他们理解。


阅读 519

收藏
2020-02-09

共1个答案

一尘不染

Python的GIL旨在序列化从不同线程对解释器内部的访问。在多核系统上,这意味着多个线程无法有效利用多个核。(如果GIL不会导致此问题,那么大多数人就不会在意GIL-只是由于多核系统的普及而成为一个问题。)如果您想详细了解它,您可以观看此视频或查看这组幻灯片。可能信息太多,但是您确实要求提供详细信息:-)

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

2020-02-09