首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

CPython 3.11 来了

当使用 pyperformance 基准套件测量在 Ubuntu Linux 上使用 GCC 编译时, CPython 3.11 平均比 CPython 3.10 快 25% 。...CPython 3.11 的性能改进主要集中在更快的启动和更快的运行时,这些优化大部分来自于 PEP 659  :自适应解释器,它运作思路跟 JIT 有点相似,都是识别热点代码,但自适应解释器的工作范围无法脱离字节码...而 Faster CPython 团队在 CPython 3.11 中所做的优化工作在很大程度上忽略了扩展模块的问题,对此,团队领导者 Shannon 表示,团队正在开辟将低级函数 API 暴露给虚拟机的可能性...(顺便说一下,Shannon 一直对 CPython 是否真的需要引入 JIT 持怀疑态度。)...这个提案和 Faster CPython 团队的工作将以截然不同的方式加速多线程 Python 代码,但两者又可能产生一些冲突,毕竟 Faster CPython 已实施的优化,很大一部分都基于 GIL

1.3K30
您找到你想要的搜索结果了吗?
是的
没有找到

CPython源码阅读笔记(2)

PyObject CPython 中基本的数据结构是 Object,所有的 Python 对象都可以用 PyObject * 来访问,CPython 中通过 Object 手动实现了对象系统。...CPython 中的对象都需要通过特定的函数来创建,所有对象都需要申请内存来创建在堆中,不允许创建在栈上或者创建为全局变量(例如直接声明 PyIntObject i),因为需要统一使用引用计数来管理内存...Added in version 2.6 */ unsigned int tp_version_tag; } PyTypeObject; PyIntObject PyIntObject 为 CPython...ob_ival; } PyIntObject; PyIntObject 的创建 PyIntObject 的创建可以通过 5 个 API 中的一个来完成, 其中最常用的为 PyInt_FromLong, CPython...PyObject *) v; } PyInt_FromLong 中可以看到, 定义了名为 small_ints 的全局数组,用于存储大于-5小于257的小整数,这些对象在解释器初始化后便申请完成,并且在 CPython

1.5K30

想学CPython,Python之父Guido亲上阵

就在刚刚(2020年2月10日),Python之父Guido van Rossum在其个人Blog中发布了他对CPython学习的帮助教程。下面让我们一睹为快吧! ? 1 你需要了解的!...2 入门文档 ▌核心教程,先从这里开始: ▌https://cpython-core-tutorial.readthedocs.io/en/latest/ ?...4 Workflow ▌Git设置 1、如果你还没有GitHub账号,请登录GitHub.com 2、在GitHub上调用Python/CPython repo,点击Fork按钮(右上角): ?...3、在本地克隆你的fork: `git clone git@github.com:YOURUSERNAME/cpython.git` `cd cpython` 4、配置upstream remote,现在你可以用...“git push”和“git pull”来push/pull你的fork: git remote add upstream https://github.com/python/cpython/ 5、创建一个分支工作

74410

Python源码剖析:深度探索Cpython对象-达观数据

CPython 是 Python 社区的标准,其他版本的 Python,比如 pypy,都会遵行 CPython 的标准 API 实现。...想要更深入的认识 Python,就需要了解 CPython 的源码实现。本文将从 CPython 的对象构造器开始入手,带大家揭开 CPython 源码的面纱,带你进入 C + Python 的世界。...二、CPython 整体架构CPython 整体架构大致分为三个模块:代码文件 File Groups - Python 所提供的的大量的模块、库、以及用户自定义的模块。...本文从 CPython 对象构造器入手,介绍了浮点数对象在 CPython 底层数据结构中的表现形式以及对象创建的过程。...通过进一步了解 CPython 动态性的实现方式,读者可望在阅读 CPython 源码后提升编写高质量代码的能力。

21310

Python 3.11 ,即将变得更快!

在去年的 PyCon US 2021 会议上,他称自己 "选择回到我的根源",并将致力于解决 Python 著名的性能不足问题 性能也许并不是 Python 的首要任务,因为机器学习和数据科学的采用得益于...3.11 在过去一年的性能更新。...具体来说,我们希望通过 CPython 实现这些性能目标,使所有 Python 用户受益,包括那些无法使用 PyPy 或其他替代性虚拟机的用户。”...CPython JIT 编译器即将实现 关于 Python 性能的即时(JIT)编译器问题,根据 Python 软件基金会(PSF)对该事件的报道,Shannon 认为这不是一个优先事项,可能最早也要到...另一个是 PyPy,它是 CPython 的一个实现,带有JIT编译器以获得更快的性能

78410

Python 3.11 ,即将变得更快!

在去年的PyCon US 2021会议上,他称自己 "选择回到我的根源",并将致力于解决Python著名的性能不足问题 性能也许并不是Python的首要任务,因为机器学习和数据科学的采用得益于TensorFlow...3.11在过去一年的性能更新。...具体来说,我们希望通过CPython实现这些性能目标,使所有Python用户受益,包括那些无法使用PyPy或其他替代性虚拟机的用户。”...CPython JIT编译器即将实现 关于Python性能的即时(JIT)编译器问题,根据Python软件基金会(PSF)对该事件的报道,Shannon认为这不是一个优先事项,可能最早也要到Python...另一个是PyPy,它是CPython的一个实现,带有JIT编译器以获得更快的性能

53320

Python之父:明年让Python快2倍

但在此之前,Guido可并不认为提升CPython的速度有多关键,因为“有其他方法可以获得更好的性能”,比如JIT编译的PyPy,或使用C语言编写扩展。 为什么要加速? Python真的慢吗?...在接受英国技术新闻网站The Register的采访时,对于“为什么开始关注CPython性能?”...这意味着我们可以不用担心破坏其可靠性,而是专注在性能上。 并且,Shannon之前参与的HotPy项目中所开发的解释器,比目前CPython解释器的纯Python代码快三倍。...这就是所有既试图兼容CPython,又想大幅提升性能的Python都会遇到的严峻问题。 因为Python的执行类似于HTML渲染:更多是对运行时应如何执行C库的描述,而非单步执行命令。...所以,Python性能提升的源头来自于这些C扩展模块。而CPython又有着超过400k的loc,这意味着要从底层去做优化是一项非常庞大的工程。

50260

为什么Python这么慢?

以下是最主要的原因: “它是GIL(Global Interpreter Lock全局解释器锁)” “它是解释型语言而非编译语言” “它是动态类型语言” 那么以上哪种原因对性能影响最大呢?...这对Python的性能意味着什么呢? 如果你的应用基于单线程、单解释器,那么讨论速度这一点就毫无意义,因为去掉GIL并不会影响代码性能。...CPython发行版没有内置DTrace,因此你必须重新编译CPython。以下演示中使用3.6.6版本。...其他语言之所以那么快是因为他们牺牲了一定的灵活性,从而提高了性能。 了解一下Cython,它结合了C-Static类型和Python来优化已知类型的代码,可以提供84倍速度的性能提升。...对于性能优先并且有更多静态变量的代码部分,请考虑使用Cython。

1K40

Python 3.12 目标:还可以更快!

据测试,3.11 相比于 3.10,将会有 10-60% 的性能提升,这个成果主要归功于“Faster CPython”项目,即“香农计划”。...本文是 Faster CPython 计划在 3.12 中实现的主要内容的概要。...这里有一些向后兼容性与性能之间的权衡问题,可能需要提出一个 PEP 来建立共识。图片减少内存管理的开销我们不仅会减小对象的大小,还会使它们的 layout 更加规则。...积极地在 C 语言级别监控和改进 CPython 测试套的代码覆盖率。改进 Python 性能基准测试套,加入更具代表性的现实世界的负载测试。...协助处理 CPython 问题和 PR,特别是与性能有关的问题。增加用于标准基准测试的机器,增加 macOS 和 Windows 的测试结果。

74420

比Mojo慢68000倍,Python性能差的锅该给GIL吗?

Python 在高性能、多线程方面为什么这么为人诟病?本文将以 Python PEP 703 草案的相关内容为核心,分析个中原因。...Python 虚拟机保持移除前的单核性能 移除 GIL 会令 Python 扩展模块的开发变复杂,因为所有的扩展模块都需要考虑被多线程调用的情况了 另外,在 Python 社区中,CPython 的维护者对于去掉...GIL 的提案还有一些明确的约束: 简单:不能让 CPython 变得不可维护并发:能确实提高多线程性能速度:不能降低单线程性能特性:必须完整实现目前 CPython 的所有特性,包括 __del__...和弱引用API 兼容:和目前的 CPython 扩展所使用的宏源码兼容…… 简单:不能让 CPython 变得不可维护 并发:能确实提高多线程性能 速度:不能降低单线程性能 特性:必须完整实现目前...一个典型例子是 CPython 的 GC 实现,目前 CPython GC 的方案是以引用计数为主,辅以标记清除来处理循环引用的情况。

50640

Python代码执行模型

Python的各种实现 CPython CPython是Python标准的实现。除了CPython之外,还有其他几种主要的Python实现。...PyPy是一个现成的CPython替代品,它能更快的运行大多数的程序。 CPython是最初的,标准的Python实现。它由ANSI C编写而成。...你从python官网(https://www.python.org/)获取的Python就是CPython。绝大多数的Linux系统附带的Python也是CPython。...PyPy PyPy是CPython标准的另一个实现,它更加注重性能。它提供了一个带有即时编译器(JIT)的实现。即时编译器是指在运行代码的时候进行动态编译,而不是运行前编译好。...因此,PyPy的性能将更好(几乎能跟C代码一样快),同时占用的内存可能更少。 PyPy回避了垃圾回收(GC)机制,这导致它的非引用计数方案意味着临时文件不会立即关闭,甚至有时候需要手动释放。

71950
领券