Pyston v2:更快的Python

2020-10-29 10:34:42

我们非常高兴能发布Pyston v2,它是Python编程语言的一个更快、高度兼容的实现。在我们的宏观基准测试中,版本2比股票Python3.8快20%。更重要的是,它可能会在您的代码上运行得更快。Pyston v2可以降低服务器成本、减少用户延迟并提高开发人员的工作效率。

Pyston v2易于部署,所以如果您正在寻找更好的Python性能,我们建议您花5分钟时间尝试一下Pyston。这样做是加快项目速度的最简单方法之一。

在几乎没有缺点的情况下,Pyston v2在许多工作负载上提供了显著的加速。我们的重点一直放在Web服务工作负载上,但Pyston v2在其他工作负载和流行基准上的速度也更快。

我们的团队构建了一个新的公共Python宏基准测试套件,用于测量几个常用Python项目的性能。该套件中的基准测试比其他Python套件中的基准测试更大,这使得它们更有可能代表真实世界的应用程序。尽管这给了我们一个比其他项目更低的标题数字,但我们相信它可以为实际用例带来更好的加速。Pyston v2在微基准测试上仍然表现出更快的性能,在chaos.py和nbody.py等测试中的速度是标准Python的两倍。

[1]预热时间定义为基准测试达到峰值性能的95%之前的时间;如果无法与噪声区分,则标记为“n/a”。延迟测量仅考虑预热后行为。[2]Mypy和PyTorch不支持从源代码自动构建其C扩展,因此这些Pyston编号使用我们的不安全兼容模式[3]PyPy基准测试套件已修改为仅运行与Python3.8兼容的基准测试。

在我们的目标基准测试(djangocms+flaskblogging)中,Pyston v2在每个进程仅多使用几兆字节的情况下,平均延迟加速1.22倍,P99延迟提高1.18倍。我们还没有投入时间来优化其他基准。

“p99延迟”是响应时间分布的第99个百分位数,是Web服务上下文中常用的度量标准,因为它可以洞察通过取平均值而丢失的用户体验。PyPy在djangocms上的高p99延迟来自周期性的延迟峰值,大概是因为垃圾收集暂停。CPython和Pyston都显示出周期性的尖峰,大概来自它们的周期收集器,但它们的频率都较低,幅度也小得多。

Mypy和PyTorch基准测试显示了Pyston v2的自然边界。这两个基准测试的大部分工作都是在C扩展中完成的,而C扩展不受我们的Python加速的影响。我们本机支持C API,并且没有模拟层,因此我们仍然能够提供对mypy性能的小幅提升,并且不会降低pytorch或numpy的性能。您的收益将取决于您混合使用Python和C扩展工作。

我们计划在未来的博客文章中更详细地介绍,但我们在Pyston v2中使用的一些技术包括:

由于Pyston是CPython的一个分支,我们相信它是当今可用的最兼容的替代Python实现之一。它支持与CPython相同的所有功能和C API。

虽然Pyston在理论上功能相同,但实际上任何新的Python实现都有一些临时的兼容性障碍。请查看我们的维基了解详细信息。

Pyston v2.0立即以预构建包的形式提供。目前我们有针对Ubuntu 18.04和20.04x86_64的包。如果您希望支持不同的操作系统,请在我们的问题跟踪器中提交问题,让我们知道这一点。

试用Pyston非常简单,只需安装我们的软件包,用pyston3替换python3,然后用pip-pyston3 install重新安装您的依赖项(尽管有关setuptools的已知问题,请参阅我们的wiki)。如果您已经设置了自动构建,则更改应该只需几行。

我们的计划是在未来将代码开源,但是由于编译器项目很昂贵,而且我们不再有善意的企业赞助,所以在我们完善我们的商业模式期间,它目前是关闭源代码的。

我们正在为开发人员设计Pyston,并乐于听取您的需求和经验。所以,我们设置了一个不和谐服务器,您可以在那里与我们聊天。如果您想要商业支持的Pyston版本,请给我们发电子邮件。

我们已经针对几个用例对Pyston进行了优化,但我们渴望听到新的用例,这样我们就可以让它更有益处。如果您遇到任何问题或实例,Pyston没有像预期的那样提供帮助,请让我们知道!

我们在Dropbox设计了Pyston v1来加速Python的Web服务工作负载。项目结束后,我们团队中的一些人集思广益,如果我们再做一次,我们会如何不同地做这件事。在2020年初,我们有足够多的东西可以成立一家公司,全职从事Pyston的工作。

Pyston v2的灵感来自于最初的Pyston v1,但从技术上讲与之无关。

我们的使命是让Python变得更快,我们有很多想法可以做到这一点。这意味着我们正在积极寻找加入团队的人。如果你想参与进来,请告诉我们。否则,请继续关注未来的版本,如果您有任何问题,请联系我们!