社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Python

Python 很慢,但它即将变得更快!

Python极客专栏 • 2 年前 • 200 次点击  

来源:CSDN


作为一门异常受欢迎的编程语言,Python的优点有很多,比如:易于学习、用途广泛、有成千上万个用于数据科学的有用的库。但同时,Python一直被诟病的就是它运行速度太慢。

在去年的PyCon US 2021大会上,Python之父Guido van Rossum曾表示:要在2022年的Python 3.11中,将Python速度提高2倍,4年内,速度提升5倍,以解决Python与C++等其他编程语言相比在速度上的关键缺点。

如今,速度太慢的情况在Python 3.11中即将改变。在今年晚些时候发布稳定版之前,目前正处于其预览版(版本3.11.0b1)的第一个测试阶段。


CPython 3.11已比3.10提速1.25倍


在近期的PyCon US 2022会议上,Core Python(CPython)开发者Mark Shannon分享了关于加速Python项目的细节,此外,开发者还展示了在浏览器中运行Python代码这一目标的进展。

去年,微软资助了Python软件基金会(PSF)的一个项目——“Shannon Plan”,该项目由Python创造者Guido van Rossum和Mark Shannon领导,承诺在今年的Python 3.11中将其速度提高2倍。其愿景是促使Python向C语言的性能发展。

微软在2020年聘请了van Rossum,并让他自由选择任何项目。在去年的PyCon US 2021会议上,他称自己 "选择回到我的根源",并将致力于解决Python著名的性能不足问题

性能也许并不是Python的首要任务,因为机器学习和数据科学的采用得益于TensorFlow、NumPy、Pandas以及更多的平台,如AWS的Boto3 SDK for Python。这些平台每月被下载数千万次,并在通常不受硬件限制的环境中使用。

Faster CPython项目(GitHub地址:https://github.com/faster-cpython/ideas/blob/main/main-vs-310.rst)提供了一些关于CPython 3.11在过去一年的性能更新。在PyCon US 2022会议之前,该项目公布了更多的结果:在几十个性能指标上对3.11测试预览版和3.10进行了比较,显示3.11.0b1总体上比3.10快1.25倍


新的字节码解释器使错误处理更高效


Shannon对该项目提高Python性能的能力持现实态度,但他相信这些改进可以将Python的可行用途扩展到更多的虚拟机。他去年在Python增强提案(PEP)659中写道:“Python被广泛认为是缓慢的。

虽然Python永远达不到C、Fortran甚至Java等低级语言的性能,但我们希望它能与脚本语言的快速实现相媲美,如Javascript的V8或Lua的LuaJIT。具体来说,我们希望通过CPython实现这些性能目标,使所有Python用户受益,包括那些无法使用PyPy或其他替代性虚拟机的用户。”

在PEP 659中详述的关键方法是:“专门化的、自适应的解释器,但它在一个非常小的区域内积极地专门化代码,并能够迅速和低成本地适应错误的专门化。

如上所述,虚拟机的优化是 "昂贵的",往往需要很长的 "预热 "时间。为了避免这种时间开销,虚拟机应该推测“即使在一个函数执行几次后,专门化也是合理的”。所以,解释器需要持续地且非常低廉地进行优化和去优化。

这应该会 产生一个更快的CPython解释器,它可以在程序执行过程中跟踪单个字节码。据Python软件基金会(PSF)称,新解释器的工作几乎已经完成,但仍需要完成循环和二进制操作的动态专门化。

此外,3.11的内存消耗与3.10相比没有变化。


CPython JIT编译器即将实现


关于Python性能的即时(JIT)编译器问题,根据Python软件基金会(PSF)对该事件的报道,Shannon认为这不是一个优先事项,可能最早也要到Python 3.13才能实现。

此外,用于数据科学的Anaconda Python发行版的制造商Anaconda,正在支持Pyston项目,该项目是Python的一个实现,承诺比Python有速度上的提高。

Anaconda在加速Python方面较早的努力之一是Numba项目,这是一个基于LLVM的CPython JIT编译器,它可以加速在CPU或GPU上运行的Python数值函数,但不能优化整个程序,也不能解决更广泛的Python用例。另一个是PyPy,它是CPython的一个实现,带有JIT编译器以获得更快的性能。

根据Faster CPython项目的实施计划(GitHub地址:https://github.com/markshannon/faster-cpython/blob/master/plan.md),CPython 3.12可能会获得一个 "用于小区域的简单JIT编译器",在运行时使用相对简单、快速的编译器编译小区域的专门代码;而CPython 3.13将扩展编译区域,增强编译器以生成卓越的机器代码

最后,对于以上Faster CPython项目加速Python的做法,你有什么看法?欢迎在评论区留言

参考链接:

https://www.zdnet.com/article/programming-languages-python-is-slow-but-its-about-to-get-faster/

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/135587
 
200 次点击