APP下载

专家点出Python之父近期重大宣布,CPython执行速度4年内将翻5倍

消息来源:baojiabao.com 作者: 发布时间:2024-10-11

报价宝综合消息专家点出Python之父近期重大宣布,CPython执行速度4年内将翻5倍

Guido van Rossum将与微软4位Python核心开发者,共同研究提升CPython效能的方法。目前已经把将计划文件置于GitHub上。

图片来源: 

图/Mark Shannon

交大AI学院副教授魏泽人认为,Python之父Guido van Rossum在今年5月的PyCon US上宣布,要在4年内将CPython的执行速度提升5倍,是Python开发者近期值得关注的议题。他指出,由于这次效能提升的计划,会直接更新到Python官方版本中,“可能是一个很大的转变。”

CPython是以C语言实作的直译器,由于是Python官方组织发布的工具,它也是当前最广泛使用的Python直译器。魏泽人解释,Python的一大缺点,就是执行速度慢,需要靠C语言编写的直译器CPython,来加速Python的执行;在进行大数据分析的相关应用时,为了提升大量运算的需求,也可能搭配如Numpy、TensorFlow等以C语言为主编写的函式库,来提升执行效率。换句话说,Python执行速度慢的问题已经存在已久,过去常见做法,就是与其他编译式语言相搭配,来加快Python执行速度。

不过,这个问题似乎在今年迎来转机。5月时,Guido在微软开发者社群Reactor的一场采访中表示,去年加入微软后,原先想投入Python在资料科学领域的贡献,但在实作AI应用后,发现机器学习领域博大精深,若要精通并对这个领域贡献,可能要花上3~4年时间。因此,他后来选择与微软4位Python核心开发者,共组一个团队,来研究提升CPython效能的方法。团队成员更已经把将相关文件置于GitHub上,计划分4阶段来提升CPython执行速度。

文件中明确列出了4阶段计划时程与内容。首先在第一阶段,将在今年10月要发布的Python 3.10版本中,增加一个适应性、专业化的直译器(interpreter);第二阶段,则是要在Python 3.11版本中进行多个关键项目的改进,包括提升二元运算符(binary operators)的效能,或是透过更好的物件内存设计,来减少内存管理的资源消耗(overhead)。第三阶段,是要在Python 3.12版本加入小范围使用的简易JIT编译器;最后一个阶段,是要在Python 3.13版本中扩充编译区域,加强编译功能来生成更高级的机器语言(machine code)。

在这4个阶段中,预计每阶段都要提升CPython速度50%,最后达到总执行速度提升5倍的成效。但文件内也指明,某些平台禁止执行过程中的程式码生成(runtime code generation),比如苹果行动装置的iOS平台就是其中一例,对这些平台来说,只有前两阶段有助于提升CPython的效能,也就无法提升5倍速度,只能提升大约2倍。

Guido在PyCon US上,也说明了CPython效能提升,对使用者产生的影响。他指出,受益较大的使用者,是在密集CPU(CPU-intensive)上执行Python程式码、用Python写网站,以及使用Python编写的工具或套件的使用者,未来程式码执行速度会更快;但相对的,使用Numpy、Tensorflow等本来就已经用C语言编写的套件、内存输入输出绑定(I/O-bound)的程式码、多执行绪程式码以及算法效率低下的程式码,对这些使用者来说受益较小,Python效能精进相对较少。

他在访谈中也提到,“加快Python速度”这件事,过去也有不少团队致力于改进。比如脸书5月开源了Cinder专案,这是一个Instagram内部效能导向的CPython 3.8生产版本,透过多种方法实现CPython的效能优化,其中的Cinder JIT几乎支援了所有Python运算程式码,在许多Python效能基准测试中,更可以达到1.5~4倍的速度提升。

Dropbox内部也有Modzelewski和Marius Wachtler等开发人员,开源了Pyston专案,现在已经更版到Pyston 2.2,最新5月的发布指出,Pyston 2.2在Web服务器基准测试中,比普通Python快了30%,这还是保守的说法。这个版本也立基在CPython 3.8.8之上,融合了许多CPython的改变。

不过,由于这些专案都不是Python官方所开发,而是各家企业为了在内部加快Python执行的速度,对CPython所做的修改。因此,魏泽人认为,Guido与微软团队主导的CPython效能改善,是官方标准版本的改变,能对更多Python使用者带来影响。

Python TIOBE流行度即将媲美C、Java

除了Python速度的加快,是未来可关注的焦点,Python近期流行度也大幅提升,根据热门程式语言排行榜TIOBE Index的7月排行公布,前三名C、Java和Python分数前所未有的接近,依照现在的态势,Python也很有机会超过C语言成为第一名。而Python排名的进步,可能与Python在疫情期间被用于寻找对抗病毒的药物有关。

魏泽人则是较以长期观察的角度来评论,认为Python排名提升是许多因素综合的结果。他推测,其中一大关键,可能是Python本身易上手、快速开发、用途广泛的特性,推动学校纷纷开课教授这门程式语言,学生毕业后进入职场,又带动职场IT开发语言的改变,而逐渐巩固了Python的地位。

尤其,Python不只能用于开发网页、后端、行动应用程序以及嵌入式系统的应用,近年来AI的蓬勃发展,更掀起Python的新一波应用浪潮,加上Python虽然无法直接用于系统开发,但能作为胶水语言,并与其他如C、Java等语言搭配使用,无论是用于整合或串接各式各样的系统(例如数据库),或在进行数据计算时,用来连接其他语言编写的函式库等,都有用武之地。

因此,他认为,无论Python日后是否如预期的夺下第一的宝座,未来几年内掉出十名以外的概率较小,毕竟其他可能成为Python竞争对手的语言,如Julia、Rust,教学上还不够普及,仍在发展的阶段。

2021-07-16 19:46:00

相关文章