编译的多线程Python受GIL的影响

时间:2014-02-11 20:47:16

标签: python multithreading python-3.x gil

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

希望这是有道理的,我不会错过任何明显或错误解释GIL如何工作/影响执行的内容。

由于

2 个答案:

答案 0 :(得分:2)

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

例如,使用Jython运行代码确实克服了GIL施加的限制。

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

答案 1 :(得分:1)

Jython没有GIL。

IronPython没有GIL。

您可以使用cython编译您的python代码,然后是否使用GIL取决于。如果将所有python变量转换为cython类型,则可以在with nogil块中运行代码,因为您明确地发布了GIL,所以没有GIL。如果你没有在nogil区域中运行,那么你将受到cpython的GIL的影响。更多内容在cython docs中: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/