时间:2022-10-09 18:01:40 | 浏览:246
按照发布计划,Python 3.11.0 将于 2022 年 10 月 24 日发布。
据测试,3.11 相比于 3.10,将会有 10-60% 的性能提升,这个成果主要归功于“Faster CPython”项目,即“香农计划”。
关于“香农计划”的详情,可查看 Python 之父的主题分享,以及他的一则播客访谈。
3.11 版本为 Python 的提速开了一个激动人心的好头。接下来,3.12 还会有更多动作。
以下文章翻译自“香农计划”的《Python 3.12 Goals》,大家先一睹为快吧!
本文内容可能会改动,以实际版本为准!
本文是 Faster CPython 计划在 3.12 中实现的主要内容的概要。
Python 3.11 提升速度的主要方法是用更快的与上下文相关的操作码(自适应的专门化操作码)替换个别的操作码,下一个大的改进方法是优化多个操作码的运行。
为此,现有的许多高级操作码将被替换成低级操作码,例如,用于检查版本号和引用计数的操作码。这些更简单的操作码更容易进行优化,例如,可以删除冗余的引用计数操作。
这些更底层的操作码还能让我们得到一组适合用于生成机器代码的指令(在 CPython 和第三方 JIT 项目中都适用)。
为了做到这点,解释器循环(interpreter loop)将基于声明性的描述而生成。
这可减少一部分为了保持解释器循环与某些相关函数同步而产生的 bug(mark_stacks、stack_effect 等函数),同时也让我们可以对解释器循环作较大的更改试验。
Python 当前每个进程有一个全局解释器锁(GIL),阻碍了多线程的并行。
PEP-684 提出了一个方案,即保证所有的全局状态都是线程安全的,并移动到每个子解释器的全局解释器锁中使用。
PEP-554 提出了让 Python 创建子解释器的方案(目前只是一个 C API 特性),从而实现真正的多线程并行。
我们分析了哪些字节码将从专门化中获益最多,计划在 3.12 完成其余的高收益的改进。
有许多可以减少 Python 对象结构大小的机会。由于它们被频繁使用,这不仅有利于总体的内存使用,还有利于缓存的一致性。我们计划在 3.12 中实现最有希望的一些想法。
这里有一些向后兼容性与性能之间的权衡问题,可能需要提出一个 PEP 来建立共识。
我们不仅会减小对象的大小,还会使它们的 layout 更加规则。
这不仅能优化内存的分配及释放,还能在 GC 和重新分配期间加快遍历对象的速度。
除了前述项目外,开发团队还将提升 CPython 代码库的整体质量:
通过减少不同编译阶段的耦合,使编译器更易于维护与测试。
积极地在 C 语言级别监控和改进 CPython 测试套的代码覆盖率。
改进 Python 性能基准测试套,加入更具代表性的现实世界的负载测试。
协助处理 CPython 问题和 PR,特别是与性能有关的问题。
增加用于标准基准测试的机器,增加 macOS 和 Windows 的测试结果。
继续跟主要的深度使用 Python 内核的项目合作,帮助它们适配 CPython 解释器的更改。
注:文中图片为译者所加。
首发于 Python猫 ,如需转载,请联系作者
知乎:Python猫
博客园:豌豆花下猫
掘金:豌豆花下猫
CSDN:Python猫
Python是一门很出色的胶水语言,也就是当我们有现成的组件后,Python非常适合将他们组装起来。机器学习的例子就比较典型。我们用C++写好Tensorflow,用C写好Numpy,用Scala写好Spark,现在想用这些组件训练一个机器
写在最前面其实想学习编程很久了,以前也陆陆续续学习过一段时间的编程,但总是半途而废,经过我长达三秒钟的思考,总结出以下两个方面的原因:1、没有学习的压力。因为我不是程序员,编程不是我吃饭的家伙,会不会编程并不会影响什么,但我又觉得编程是一件
苹果与安卓最大的不同在于对于媒体评测机有严格的要求,必须在官方统一安排的时间之内发出,如果提前发出那不仅仅是面临罚款的问题,甚至是以后合作的机会都没有了。这不iPhone 14系列的评测解禁就安排在了9月14日晚,现在给大家汇总下评测体验部
一、强类型和弱类型语言:C、 C++、 Java 、Python都是强类型的语言。PHP是弱类型的语言。强类型语言是一种强制类型定义的语言,即一旦某一个变量被定义类型,如果不经强制转换,那么它永远就是该数据类型。而弱类型语言是一种弱类型定义
乾明 发自 凹非寺 量子位 报道 | 公众号 QbitAIPython势头不减,依旧第一,而且进一步拉开了与其他语言的差距。这一结果,来自IEEE Spectrum2019年度编程语言排行榜。这已经是Python连续3年保持第一。在Pyth
首先,我们先普及一下编程语言的基础知识。用任何编程语言来开发程序,都是为了让计算机干活,比如编写一篇文章,下载一首MP3等,而计算机干活的CPU只认识机器的指令,所以,尽管不同的编程语言差异极大,最后都得“翻译”成CPU可以执行的机器指令。
全球知名TIOBE 编程语言社区发布了11 月编程语言排行榜。下面让我们一起来看看,本月榜单中有哪些值得注意的新变化吧!01PHP即将跌出前十自 20 多年前 TIOBE 指数开始发布以来,PHP 一直常驻在榜单前十,然而最近,该语言已经开
【51CTO.com快译】在本文中,我们将逐一介绍目前人气较高的三种编程语言:PHP、Ruby和Python。我们将分析它们是如何工作的,它们彼此有何不同,谁在使用它们,以及每种语言受欢迎的程度。一、 PHP:互联网上最受欢迎的脚本语言PH
TIOBE 编程社区指数是编程语言流行程度的指标。该指数每月更新一次。评级基于全球熟练工程师、课程和第三方供应商的数量。谷歌、必应、雅虎、维基百科、亚马逊、YouTube 和百度等流行搜索引擎用于计算评分。需要注意的是,TIOBE 指数与最
IT行业现在依然是求职转行人群的首选,那么当下的IT培训机构中IT技术课程类目繁多,尤其是Java培训,PHP培训,Python培训以及前端培训最火,零基础人员如何选择一种适合自己的编程开发语言课程去学习入行呢?前三者属于后端的开发语言,我