Python 之父爆料:明年至少令 Python 提速 1 倍!

简介: Python 之父爆料:明年至少令 Python 提速 1 倍!

大概在半年前,我偶然看到一篇文章,有人提出了给 Python 提速 5 倍的计划,并在寻找经费赞助。当时并没有在意,此后也没有看到这方面的消息。

但是,就在 5 月 13 日“2021 年 Python 语言峰会”上,Python 之父 Guido van Rossum 作了一场《Making CPython Faster 》的分享,他已经投入了这项计划!

据 Guido 爆料,他因为“退休”无聊,申请加入了微软,因此组建起一个小团队。目前成员除了他还有两个:Eric Snow(Python 核心开发者之一、微软高级工程师)和 Mark Shannon(本文第一段那个计划的提出者,精通 Python 性能研究)。

整个计划被称为“香农计划”(即“Shannon Plan”,得名于提出者),期望花 4 年时间把 Python 提速 5 倍,即每年 1.5 倍。现在短期的计划是在 Python 3.11 版本中实现至少提速 1 倍。

按照官方的发布周期,今年 10 月会发布 3.10 版本,而 3.11 版本将在 2022 年 10 月发布。

怎么做到令 3.11 版本提速一倍呢?

根据 Guido 的分享,第一项优化工作是“适应性的、专门的字节码解释器”,相关的设想已经起草到 PEP-659 中:

image.png

其它的优化内容还有:

  • 优化帧堆栈,更快的调用,调整分配( optimize frame stack, faster calls, tweak allocation)
  • “零开销”异常处理(“Zero overhead” exception handling)

以及这些工作:

image.png

这些优化工作都要在不破坏接口兼容性的前提下实现,同时还要保持代码的可维护性。

在 Guido 的分享中,还有很多细节内容。在这里,我们把完整的分享材料贴一下吧。(原文件是 PDF 版本,可在“Python猫”后台回复数字“0516”下载 )

image.png

image.png

image.png

image.png

image.png

image.png

image.png

目录
相关文章
|
6月前
|
Rust 自然语言处理 前端开发
Python潮流周刊#8:Python 3.13 计划将解释器提速 50%!
Python潮流周刊#8:Python 3.13 计划将解释器提速 50%!
76 2
|
6月前
|
Python
Python中如何实现字符串反转?请提供至少两种方法。
Python中如何实现字符串反转?请提供至少两种方法。
87 3
|
6月前
|
Python
Python中如何实现列表去重?请提供至少两种方法
【2月更文挑战第25天】【2月更文挑战第83篇】Python中如何实现列表去重?请提供至少两种方法
60 0
|
6月前
|
存储 机器学习/深度学习 缓存
加速Python循环的12种方法,最高可以提速900倍
在本文中,我将介绍一些简单的方法,可以将Python for循环的速度提高1.3到900倍。
247 1
|
缓存 自然语言处理 并行计算
Python 提速大杀器之 numba 篇
你是不是曾经有这样的苦恼,python 真的太好用了,但是它真的好慢啊(哭死) ; C++ 很快,但是真的好难写啊,此生能不碰它就不碰它。老天啊,有没有什么两全其美的办法呢?俗话说的好:办法总是比困难多,大家都有这个问题,自然也就有大佬来试着解决这个问题,这就请出我们今天的主角: numba
1050 0
Python 提速大杀器之 numba 篇
|
机器学习/深度学习 人工智能 并行计算
编译器大佬Chris Lattner全新编程语言「Mojo」:兼容Python核心功能,提速35000倍
编译器大佬Chris Lattner全新编程语言「Mojo」:兼容Python核心功能,提速35000倍
187 0
|
机器学习/深度学习 人工智能 安全
这款编译器能让Python和C++一样快:最高提速百倍,MIT出品
这款编译器能让Python和C++一样快:最高提速百倍,MIT出品
120 0
|
算法 C语言 Python
一日一技:立竿见影地把你的 Python 代码提速7倍
一日一技:立竿见影地把你的 Python 代码提速7倍
101 0
|
机器学习/深度学习 人工智能 并行计算
与 Python 无缝衔接:提速35000倍
与 Python 无缝衔接:提速35000倍
|
Python
python实现将包含100个元素列表随机分成12份,每份至少有2个元素
python实现将包含100个元素列表随机分成12份,每份至少有2个元素
770 0
python实现将包含100个元素列表随机分成12份,每份至少有2个元素