Python中的真正并行性

Python中的真正并行性,python,multiprocessing,gil,Python,Multiprocessing,Gil,由于GIL的存在,python中是否可能有真正的并行性?据我所知,每个线程在执行之前都会获取GIL,而其他线程则会等待GIL被释放。为什么要使用GIL?如果它是Python的瓶颈,那么该语言不一定强制使用GIL。语言的不同实现可能有也可能没有GIL CPython(事实上的实现)拥有GIL。因此,在使用它时,不能有真正的并行线程。但是,您可以使用多重处理来获得并行性。PyPy,该语言的另一个实现现在也有GIL Python语言的其他实现(例如Jython和IronPython)没有GIL,您可以

由于GIL的存在,python中是否可能有真正的并行性?据我所知,每个线程在执行之前都会获取GIL,而其他线程则会等待GIL被释放。为什么要使用GIL?如果它是Python的瓶颈,那么该语言不一定强制使用GIL。语言的不同实现可能有也可能没有GIL

CPython(事实上的实现)拥有GIL。因此,在使用它时,不能有真正的并行线程。但是,您可以使用多重处理来获得并行性。PyPy,该语言的另一个实现现在也有GIL

Python语言的其他实现(例如Jython和IronPython)没有GIL,您可以使用线程来运行并行操作

Cython有一个GIL,但您可以使用
with
语句来释放它

上述项目的链接:

有关此主题的更多资源:

  • 关于编程堆栈交换的问题:(感谢@Rogalski)

  • Python Wiki:

  • 大卫·比兹利的演讲-

  • Jeff Knupp的文章:


如果您想了解python中的GIL,我建议您从这里开始阅读:


请参阅消除GIL一节,了解python为什么仍然使用GIL。

为什么cpython决定使用GIL。它有什么好处GIL@FaizHalde:有数百篇关于webBetter与C代码互操作性的文章。例如,看看过多的流行库——numpy、scipy、pandas——它们都有很大一部分代码是用C编写的。有关这一主题的许多重要信息,请参阅。顺便说一句:您可以通过谷歌搜索“python gil”并单击第一个结果来找到这些信息。。。可能比在网站上发布更快,所以…;)