受GIL影响的线程化Python
由于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/
链接地址: http://www.djcxy.com/p/86469.html上一篇: threaded Python affected by the GIL
下一篇: PyPy vs Cpython, will either one drop GIL and support POSIX Threads?