由于GIL是一个围绕解释器的锁,它是否影响编译的Python?我想知道是否有可能通过在执行之前编译我的python来克服cpython固有的多线程限制。
希望这是有道理的,我不会错过任何明显或错误解释GIL如何工作/影响执行的内容。
由于
答案 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/