编译的多线程 Python 受 GIL 影响



由于 GIL 是围绕解释器的锁,它会影响编译的 Python 吗?我想知道是否有可能通过在执行之前简单地编译我的 python 来克服 cpython 固有的多线程限制。

希望这是有道理的,我没有错过一些明显的东西或误解 GIL 的工作方式/影响执行。

谢谢

正如丹尼尔在评论中所说,这取决于你如何"编译"代码。

例如,使用 Jython 运行代码确实可以绕过 GIL 施加的限制。

另一方面,使用 py2exe 这样的东西没有区别,因为这实际上只是将 CPython 与您的代码打包在一起。

> Jython 没有 GIL。

IronPython没有GIL。

你可以用cython编译你的python代码,然后它是否使用GIL取决于。如果你把所有的python变量都转换成cython类型,你可以在一个with nogil块中运行你的代码,你将没有GIL,因为你明确地释放了GIL。如果你没有在nogil块中运行,你将受到cpython的GIL的影响。更多内容请参阅cython文档:http://docs.cython.org/src/userguide/external_C_code.html#acquiring-and-releasing-the-gil

有关python和GIL的更多信息,请阅读:http://www.jeffknupp.com/blog/2013/06/30/pythons-hardest-problem-revisited/

最新更新