根据发布计划,Python3.11.0将于2022年10月24日发布。经测试,3.11相比3.10有10-60%的性能提升。这一成就主要归功于“FasterCPython”项目,即“香农项目”。关于“香农计划”的更多信息,可以查看Python之父的主题演讲和他的一则播客访谈。3.11版是加速Python的一个令人兴奋的开始。接下来3.12会有更多动作。以下文章翻译自《香农计划》的《Python 3.12 Goals》,先来看看吧!作者:MarkShannon译者:猫下豌豆花@Python猫英文:https://github.com/faster-cpython/ideas/wiki/Python-3.12-Goals本文内容可能有所变动,以实际版本为准占上风!本文是FasterCPython计划在3.12中实现的主要内容的概要。跟踪优化器在Python3.11中提高速度的主要方法是用更快的上下文相关操作码(自适应专门化操作码)替换单个操作码。下一个重大改进是优化多个操作码的操作。.为此,许多现有的高级操作码将被替换为低级操作码,例如用于检查版本号和引用计数的操作码。这些更简单的操作码更容易优化,例如,可以删除冗余的引用计数操作。这些较低级别的操作码还为我们提供了一组适用于生成机器代码的指令(在CPython和第三方JIT项目中)。为此,将根据声明性描述生成解释器循环。这减少了一些与保持解释器循环与一些相关函数(mark_stacks、stack_effect等)同步相关的错误,同时也允许我们对解释器循环进行更大的更改。多线程并行Python目前每个进程都有一个全局解释器锁(GIL),这会阻止多线程并行。PEP-684:https://peps.python.org/pep-0684PEP-554:https://peps.python.org/pep-0554PEP-684提出了一个解决方案来确保所有全局状态都是线程安全的,并且移动到每个子解释器的全局解释器锁中使用。PEP-554为Python提出了创建子解释器(目前只有CAPI特性)的解决方案,以实现真正的多线程并行。Python猫注:早在2017年就提出了PEP-554,目标是登陆Python3.8-3.9,但事与愿违。早在2019年,我还翻译了一篇文章《Has the Python GIL been slain?》。屠刀已挥,让它飞一会儿~~更专业化我们分析了哪些字节码最能从专业化中获益,并计划在3.12完成其余的高产改进。https://github.com/faster-cpy...更小的对象结构有很多机会可以减小Python对象结构的大小。由于它们被频繁使用,这不仅有利于整体内存使用,也有利于缓存一致性。我们计划在3.12中实施一些最有前途的想法。这里在向后兼容性和性能之间存在一些权衡,可能需要提出PEP来建立共识。为了减少内存管理开销,我们不仅要减小对象的大小,还要使它们的布局更加规则。这不仅优化了内存的分配和释放,还加快了GC和重新分配期间的对象遍历。API稳定性除了上述项目,开发团队还将提高CPython代码库的整体质量:通过降低不同编译阶段的耦合度,使编译器更易于维护和测试。积极监控和改进CPython测试套件在C语言级别的代码覆盖率。改进Python性能基准测试套件以包括更具代表性的真实世界负载测试。协助解决CPython问题和PR,尤其是与性能相关的问题。添加了用于标准基准测试的机器,添加了macOS和Windows的测试结果。继续与大量使用Python内核的主要项目合作,并帮助他们适应CPython解释器的变化。注:文中图片为译者所加。首发于Python猫,如需转载请联系作者知乎:Python猫博客园:猫下豌豆花掘金:猫下豌豆花CSDN:Python猫
