前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >Python 3.11 的速度或将提高两倍

Python 3.11 的速度或将提高两倍

作者头像
somenzz
发布2022-04-07 20:16:21
发布2022-04-07 20:16:21
6070
举报
文章被收录于专栏:Python七号Python七号

Python 3.11 将于 2022 年 10 月发布,Python 的作者 Guido Van Rossum(龟叔) 计划将 Python 的速度提高两倍,他未来四年的总体目标是将 Python 的速度提高五倍。

虽然 Python 是使用最广泛的计算机语言之一,但它更常用于数据分析等特定活动,而不是实际的交易软件。这是由于 Python 的抽象水平更高,这使得它作为解释语言的速度比 C++ 或 Java 等编译型语言慢。

想改变这一点。Van Rossum 在上一次 Python 语言峰会上表示,当 3.11 版本于 2022 年 10 月发布时,他计划将 Python 的速度提高两倍。

Van Rossum 的演示文稿[1]可在 Github 上找到,详细介绍了他计划如何做到这一点,为了方便你了解这一计划,我把文稿内容翻译如下:

香农计划

  • 参与该计划 - github.com/markshannon/faster-cpython[2]
  • 基于 “HotPy、HotPy2” 的经验
  • 未来四年将 Python 的速度提升 5 倍,每年 1.5 倍
  • 寻找基金会

感谢 Python

  • 当我(Guido Van Rossum,下同)退休在家时我感到无聊
  • 我向微软申请了职位,被雇用了
  • 微软给了我充分的自由来发起项目
  • 我选择回归本源
  • 这就是微软回馈 Python 的方式

开放讨论、开源

  • 已经组建了小团队(Eric Snow, Mark Shannon, Guido, 可能会扩大)
  • 与核心开发人员完全开放的协作
  • 保持 CPython 的增量更改
    • 没有长期存在的分叉/分支,6,000 行 PR 不足为奇
    • 我们也会负责维护和支持
  • 一切都是开源的
    • 开放所有具体项目的仓库
    • 开放 GitHub 仓库上的所有讨论

限制

  • 不破坏稳定的 ABI(应用程序二进制接口) 兼容性
  • 不破坏有限的 API 兼容性
  • 不打破或降低极端情况的运行速度
    • 例如,在堆栈上 push 1,000,000 个元素
  • 保持代码可维护
  • 这很难!

我们能做什么,不能做什么

  • 不更改基础对象,类型布局
    • 例如,必须保持引用计数语义
  • 可以改变字节码、栈帧布局
  • 可以改变编译器、解释器
  • 可以改变大多数对象的内部实现
    • 并非所有对象的布局都是公开的

3.11 如何提升 2 倍

  • 自适应的、专门的字节码解释器
    • 与内联缓存类似,但更全面
  • 各种其他单独的优化
    • 例如,优化帧堆栈,更快的调用,调整分配
    • “零开销”的异常处理
  • 我们还不确定我们一定会达到 2 倍!
    • 但保持乐观和好奇

其他我们可以做的

  • 提示启动时间
  • 更改 pyc 文件格式
  • 更快的整数
  • 将 __dict__ 置于固定偏移量 (-1?)
  • "隐藏的类"
  • 标记号码(但... ABI 问题)

3.11 后的计划

  • 取决于我们管理 3.11 的内容
  • 5 倍加速,我们必须要有创意
  • 我们的未来会有机器码生成
  • 可能发展稳定的ABI/有限的API

谁受益比较大

  • 运行 CPU 密集型纯 Python 代码的用户
  • 使用 Python 构建网站的用户
  • 碰巧使用 Python 工具的用户

谁受益不大

  • 已经用 C 语言编写的代码
  • numpy、tenserflow 等
  • I/O 密集型任务
  • 多线程代码
  • 算法效率低下的代码

我们的东西在哪

  • PEP 659:专业自适应的编译器
  • repos:
    • 分析、基准测试等工具
    • 讨论跟踪
    • cpython 的 fork,用于暂存分支
    • github.com/faster-cpython/cpython
    • github.com/faster-cpython/ideas
    • github.com/faster-cpython/tools

最后

总结一下,也就是自适应字节码解释器、帧堆栈优化、“零开销”异常处理,这些可能会让 Python 的速度翻一番,未来的更改可能包括坚实的 ABI(应用程序二进制接口)或机器代码生成,以进一步提高 Python 的性能。

相信龟叔,让我们拭目期待吧。

参考资料

[1]

文稿: https://github.com/faster-cpython/ideas/blob/main/FasterCPythonDark.pdf

[2]

github.com/markshannon/faster-cpython: https://github.com/markshannon/faster-cpython

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-04-06,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Python七号 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 香农计划
  • 感谢 Python
  • 开放讨论、开源
  • 限制
  • 我们能做什么,不能做什么
  • 3.11 如何提升 2 倍
  • 其他我们可以做的
  • 3.11 后的计划
  • 谁受益比较大
  • 谁受益不大
  • 我们的东西在哪
  • 最后
    • 参考资料
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档