PyPy vs Cpython,是否会丢弃GIL并支持POSIX线程?

时间:2013-07-10 22:28:48

标签: python ruby gil

鉴于GIL限制了pythons支持真正线程的能力,是否有可能将其从当前的python实现中剥离出来,以便语言最终能够支持真正的多线程。此外,假设GIL被删除,这是否意味着多核线程最终将成为脚本/解释语言,如Python和Ruby?

1 个答案:

答案 0 :(得分:2)

你的问题有缺陷。 Python支持线程很好。事实上,当你在一个在* nix下运行的Python程序中创建一个线程时,它可能只创建一个额外的pthreads线程,没有问题。 唯一的限制是 Python 代码不会并行运行(但它确实同时运行,交错运行等)。不在GIL下的代码,例如几乎所有执行I / O的代码,都不会阻止其他线程运行Python代码。

至于removing the GIL ......它是很难。就像,真的非常很难。你和我可以假设它是不可行的(嘿,至少我们会惊喜,如果一些超人 成功)。其他实现(Jython,IronPython)没有GIL,但他们的方法对于CPython来说并不实用(从我听到的内容也不容易对PyPy而言)并且它们不能完全取代CPython,因为它们落后了很多,不支持C扩展,不太容易移植到更具异国情调的平台等。

也就是说,一些PyPy开发人员正在开发一个STM解决方案(latest update),它可以从GIL中释放PyPy。另一方面CPython?即使使用STM,我也认为没有机会,特别是考虑到潜在的ABI和API破损时。