我正在看PyPy,我只是想知道为什么它没有被采用到主线Python发行版中.不会像JIT编译和更低的内存占用大大提高所有Python代码的速度吗?
简而言之,PyPy的主要缺点是什么导致它仍然是一个单独的项目?
And*_*ter 246
PyPy不是CPython的一个分支,所以它永远不能直接合并到CPython中.
从理论上讲,Python社区可以普遍采用PyPy,PyPy可以作为参考实现,CPython可以停止使用.然而,PyPy有其自身的弱点:
PyPy是一个很棒的项目,但CPU密集型任务的运行速度并不是一切,在许多应用程序中,它是许多问题中最不重要的.例如,Django可以在PyPy上运行,这使得模板更快,但CPython的数据库驱动程序比PyPy更快; 最后,哪种实现更有效取决于给定应用程序中的瓶颈在哪里.
另一个例子:你认为PyPy对游戏很有用,但是像PyPy中使用的大多数GC策略都会引起明显的抖动.对于CPython,大多数CPU密集型游戏内容被卸载到PyGame库,PyPy无法利用它,因为PyGame主要是作为C扩展实现的(尽管参见:pygame-cffi).我仍然认为PyPy可以成为一个很好的游戏平台,但我从来没有见过它实际使用过.
PyPy和CPython对基本设计问题有着截然不同的方法,并做出不同的权衡,因此在每种情况下都不会比其他人"更好".
non*_*one 52
观看Guido van Rossum的视频.他谈到了你在12分33秒时提出的同样问题.
强调:
毕竟,他是决定......
Bit*_*ise 14
一个原因可能是根据PyPy网站,它目前仅在32位和64位Intel x86架构上运行,而CPython也在其他平台上运行.这可能是由于PyPy中特定于平台的速度增强.虽然速度是一件好事,但人们通常希望语言实现尽可能"独立于平台".
除了这里所说的一切之外,PyPy在错误方面并不像CPython那样坚如磐石.使用SymPy,我们在过去的几年中发现了PyPy中的大约12个错误,包括发布版本和夜晚版本.
另一方面,我们只在CPython中发现了一个错误,那是一个预发行版.
另外,不要忽视缺乏Python 3支持.核心Python社区中没有人甚至更关心Python 2.他们正在研究Python 3.4中的下一个重大事项,这将是Python 3的第五个主要版本.PyPy的人还没有得到其中一个.因此,在他们开始成为竞争者之前,他们已经有了一些赶超的事情.
别误会我的意思.PyPy太棒了.但它在很多非常重要的方面仍然远远不比CPython好.
顺便说一句,如果你在PyPy中使用SymPy,你将看不到更小的内存占用(或者加速).请参阅https://bitbucket.org/pypy/pypy/issues/1447/.