2024-05-13 01:50:49 发布
网友
我在看PyPy,我只是想知道为什么主线Python发行版没有采用它。像JIT编译和减少内存占用这样的事情不会极大地提高所有Python代码的速度吗?
简而言之,PyPy的主要缺点是什么,导致它仍然是一个单独的项目?
首先,它是Python 2.x的not 100% compatible,而对于3.x只有preliminary support
这也不是可以合并的——pypypy提供的Python实现是使用他们创建的框架生成的,非常酷,但也与现有的CPython实现完全不同。它必须是一个完整的替代品。
PyPy和CPython之间有一些very concrete differences,一个很大的问题是如何支持extension modules-如果你想超越标准库,这是一个很大的问题。
同样值得注意的是,PyPy并不是普遍更快的。
PyPy不是CPython的分支,因此它永远不能直接合并到CPython中。
理论上,Python社区可以普遍采用PyPy,PyPy可以作为参考实现,CPython可以停止。然而,PyPy也有自己的弱点:
PyPy是一个很好的项目,但是CPU密集型任务的运行速度并不是一切,在许多应用程序中,它是最不重要的。例如,Django可以在PyPy上运行,这使得模板化更快,但是CPython的数据库驱动程序比PyPy的数据库驱动程序更快;最后,哪个实现更高效取决于给定应用程序中的瓶颈在哪里。
另一个例子:您可能认为PyPy对游戏很好,但大多数GC策略(如PyPy中使用的那些策略)会导致明显的抖动。对于CPython,大部分CPU密集型的游戏内容都被卸载到PyGame库中,PyPy无法利用这个库,因为PyGame主要是作为C扩展实现的(尽管参见:PyGame cffi)。我仍然认为PyPy可以成为一个很好的游戏平台,但我从未见过它真正被使用。
PyPy和CPython对于基本设计问题有着截然不同的方法,并且做出了不同的权衡,因此在每种情况下,两者都不是“更好”的。
见this video by Guido van Rossum。他说的和你在12分33秒问的问题一样。
亮点:
毕竟,他是决定。。。
首先,它是Python 2.x的not 100% compatible,而对于3.x只有preliminary support
这也不是可以合并的——pypypy提供的Python实现是使用他们创建的框架生成的,非常酷,但也与现有的CPython实现完全不同。它必须是一个完整的替代品。
PyPy和CPython之间有一些very concrete differences,一个很大的问题是如何支持extension modules-如果你想超越标准库,这是一个很大的问题。
同样值得注意的是,PyPy并不是普遍更快的。
PyPy不是CPython的分支,因此它永远不能直接合并到CPython中。
理论上,Python社区可以普遍采用PyPy,PyPy可以作为参考实现,CPython可以停止。然而,PyPy也有自己的弱点:
PyPy是一个很好的项目,但是CPU密集型任务的运行速度并不是一切,在许多应用程序中,它是最不重要的。例如,Django可以在PyPy上运行,这使得模板化更快,但是CPython的数据库驱动程序比PyPy的数据库驱动程序更快;最后,哪个实现更高效取决于给定应用程序中的瓶颈在哪里。
另一个例子:您可能认为PyPy对游戏很好,但大多数GC策略(如PyPy中使用的那些策略)会导致明显的抖动。对于CPython,大部分CPU密集型的游戏内容都被卸载到PyGame库中,PyPy无法利用这个库,因为PyGame主要是作为C扩展实现的(尽管参见:PyGame cffi)。我仍然认为PyPy可以成为一个很好的游戏平台,但我从未见过它真正被使用。
PyPy和CPython对于基本设计问题有着截然不同的方法,并且做出了不同的权衡,因此在每种情况下,两者都不是“更好”的。
见this video by Guido van Rossum。他说的和你在12分33秒问的问题一样。
亮点:
毕竟,他是决定。。。
相关问题 更多 >
编程相关推荐