Python中的真正并行性
由于GIL的存在,python中是否可能有真正的并行性?据我所知,每个线程在执行之前都会获取GIL,而其他线程则会等待GIL被释放。为什么要使用GIL?如果它是Python的瓶颈,那么该语言不一定强制使用GIL。语言的不同实现可能有也可能没有GIL CPython(事实上的实现)拥有GIL。因此,在使用它时,不能有真正的并行线程。但是,您可以使用多重处理来获得并行性。PyPy,该语言的另一个实现现在也有GIL Python语言的其他实现(例如Jython和IronPython)没有GIL,您可以使用线程来运行并行操作 Cython有一个GIL,但您可以使用Python中的真正并行性,python,multiprocessing,gil,Python,Multiprocessing,Gil,由于GIL的存在,python中是否可能有真正的并行性?据我所知,每个线程在执行之前都会获取GIL,而其他线程则会等待GIL被释放。为什么要使用GIL?如果它是Python的瓶颈,那么该语言不一定强制使用GIL。语言的不同实现可能有也可能没有GIL CPython(事实上的实现)拥有GIL。因此,在使用它时,不能有真正的并行线程。但是,您可以使用多重处理来获得并行性。PyPy,该语言的另一个实现现在也有GIL Python语言的其他实现(例如Jython和IronPython)没有GIL,您可以
with
语句来释放它
上述项目的链接:
- 关于编程堆栈交换的问题:(感谢@Rogalski)
- Python Wiki:
- 大卫·比兹利的演讲-
- Jeff Knupp的文章:
请参阅消除GIL一节,了解python为什么仍然使用GIL。为什么cpython决定使用GIL。它有什么好处GIL@FaizHalde:有数百篇关于webBetter与C代码互操作性的文章。例如,看看过多的流行库——numpy、scipy、pandas——它们都有很大一部分代码是用C编写的。有关这一主题的许多重要信息,请参阅。顺便说一句:您可以通过谷歌搜索“python gil”并单击第一个结果来找到这些信息。。。可能比在网站上发布更快,所以…;)