Python 3.11 你应该试试的超酷特性:二、使用Specializing adaptive interpreter提升Python性能

本文介绍了Python 3.11版本中的一项重要特性——Specializing Adaptive Interpreter,该特性通过在运行时对字节码进行优化,提升代码执行效率。文章详细阐述了Adaptive Interpreter的工作原理,并通过示例展示了其在不同类型的参数输入下如何进行适应性优化。此外,文章还提到了Faster CPython项目的目标和未来计划,以及Python 3.11版本的整体性能提升。
摘要由CSDN通过智能技术生成

Python 3.11 你应该试试的超酷特性

Python 3.11在10月24日发布。它是Python最新版本,运行速度更快且更佳友好。在经过17个月的研发,终于到了可以使用的黄金时期。

和每个发布版本一样,Python 3.11做了大量的变更及提高。你可以通过查看文档来了解大部分内容。这里,我们会阐述最酷且最有影响力的新特性。

教程里将涵盖如下内容:

  • 更好的错误信息来帮助代码追踪
  • Faster CPython项目加速代码执行
  • 在异步代码中使用Task和exception groups
  • Python静态类型新增的几个类型特性
  • 原生支持TOML格式配置文件

如果你想运行本教程所提供的示例文件,你需要先安装Python 3.11.

使用Specializing adaptive interpreter提升Python性能

Python广为所知是一个执行性能较慢的编程语言。例如,在Python中一个普通循环要比C中循环执行要慢得多。有多种解决该缺陷的方式。对于大部分程序员来说,生产力要比代码执行时间更重要。

Python容易包装其它更快语言作为库来使用。例如,NumPy计算能力要远高于原生Python实现计算工作。配备容易开发的能力,使得Python在数据科学有强大的竞争空间。

Python仍然做了很多努力来加速Python。在2020秋天,Mark Shannon提供了几个改善Python性能的建议。该提议,称之为Shannon Plan,广为所知。旨在几个发布版本中将Python提高五倍性能。

Microsoft加入了该计划,并且资助了一个开发团队——包括Mark Shannon和Python老爹,Guido van Rossum来专门承担Faster CPython项目的工作。Python 3.11基于Faster CPython项目获得了许多性能改善。本章,我们会学习 specializing adaptive interpreter。后面章节,我们还会学习faster starup times和zero-cost exceptions。

PEP 659对specializing adaptive interpreter做了技术上的阐述。主要想法是对经常执行代码通过加速指令来加速代码。类似just-in-time(JIT)编译,但是它并不是编译期间工作,它在执行期间通过替换字节码方式来实现。

在字节码生成期间增加了一个称为quickening步骤。它将在运行时对指令进行adaptive。会对不同指令查看是否进行specialize

quickening操作会在函数在指定调用次数才会引发。在CPython 3.11设定为8次(暂时不知道这个次数依据,有可能是通过对不同次数进行适配优化得到的值)。我们可以通过使用dis()方法并传递daptive参数来观察解释器对字节码做adapt操作过程。首先我们定义一个函数,通过执行7次并传递一个浮点值作为参数。

>>> def feet_to_meters(feet):
...     return 0.3048 * feet
.
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值