首页
学习
活动
专区
圈层
工具
发布

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.9K30
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    CPython 3.11 来了

    当使用 pyperformance 基准套件测量在 Ubuntu Linux 上使用 GCC 编译时, CPython 3.11 平均比 CPython 3.10 快 25% 。...此外还需关注 C 扩展的问题:CPython 与 C 的简单接口是主要优势,而与 C 扩展的不兼容性则是一大槽点。...而 Faster CPython 团队在 CPython 3.11 中所做的优化工作在很大程度上忽略了扩展模块的问题,对此,团队领导者 Shannon 表示,团队正在开辟将低级函数 API 暴露给虚拟机的可能性...(顺便说一下,Shannon 一直对 CPython 是否真的需要引入 JIT 持怀疑态度。)...这个提案和 Faster CPython 团队的工作将以截然不同的方式加速多线程 Python 代码,但两者又可能产生一些冲突,毕竟 Faster CPython 已实施的优化,很大一部分都基于 GIL

    1.7K30

    想学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、创建一个分支工作

    97310

    5倍提升,加速CPython!Quant如何看?

    今天既有正经推文,也有量化八卦~ 去年11月,Python 之父Guido van Rossum宣布了他已经加入微软的消息: 在微软的日子里,他获得了选择项目的自由,并决定让CPython变得更快。...Guido van Rossum、Mark Shannon(加速计划的提出者,精通 Python 性能研究)、Eric Snow(Python 核心开发者之一、微软高级工程师)等多人组成的小团队来加速CPython...加速CPython! 在今年2021 Python语言峰会上,Guido Van Rossum在表示:他打算在2022年10月发布3.11版本时将快CPython的速度提高1倍。...在接下来的四年里,他的目标是将CPython的速度提高到原来的5倍。 相关阅读 最新!...想学CPython,Python之父Guido亲上阵 整个计划被称为“香农计划”(即“Shannon Plan”,得名于提出者),期望花 4 年时间把 Python 提速 5 倍,即每年 1.5 倍。

    1.5K10

    《PyPy超越CPython的核心技术架构解析》

    PyPy的类型特化机制,是其突破CPython动态类型性能桎梏的核心技术支点,这种运行时的自适应优化能力,让动态类型语言摆脱了重复类型校验带来的效率损耗。...PyPy在垃圾回收机制上的架构革新,是其超越CPython的另一关键维度,分代增量回收与内存布局优化的双重策略,从根源上解决了传统垃圾回收机制的停顿与碎片化问题。...PyPy的自适应编译策略,凭借其精准的运行时监控与动态优化能力,让其在不同场景下都能精准命中性能痛点,这是CPython的固定执行模式无法企及的核心优势。...,远超CPython的传统C扩展方式。...PyPy的持续进化之路,本质上是动态语言执行模型的不断革新与突破,其对CPython性能瓶颈的系统性击穿,为Python生态打开了更广阔的应用空间。

    9100

    浅析 Python 的一些底层原理与 CPython

    Python 是一门强大且易用的脚本语言,以其简洁的语法和全面的功能而闻名,能够有效地支持各种业务的快速实现。但 Python 的设计者有意地隐藏了背后的复杂细节。...Python 解释器有多个主要实现版本,其中,CPython 的使用最为广泛。CPython,作为 Python 的官方解释器,是用 C 语言编写的,并在 Python 社区得到了广泛支持和贡献。...这种技术允许 PyPy 在执行程序前先将部分代码编译成机器码,而不是像 CPython 那样逐行解释执行。...通过 PyObject 的循环双向链表,CPython 可以很方便地管理底层真正分配内存的变量。...参考链接: Python 源码剖析:深度探索 Cpython 对象 - 达观数据 Python 底层是用什么语言实现的 Python 进阶笔记(二)Python 内存管理(CPython

    1.9K01

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

    CPython 是 Python 社区的标准,其他版本的 Python,比如 pypy,都会遵行 CPython 的标准 API 实现。...想要更深入的认识 Python,就需要了解 CPython 的源码实现。本文将从 CPython 的对象构造器开始入手,带大家揭开 CPython 源码的面纱,带你进入 C + Python 的世界。...五、总结     Python是一门备受推崇的脚本语言,以其简单的语法和全面的功能而著称,可快速实现各种业务。...本文从 CPython 对象构造器入手,介绍了浮点数对象在 CPython 底层数据结构中的表现形式以及对象创建的过程。...通过进一步了解 CPython 动态性的实现方式,读者可望在阅读 CPython 源码后提升编写高质量代码的能力。

    60810

    了解 Python 底层的解释器 CPython 和 Python 的对象模型

    一、CPython CPython 是 Python 编程语言的官方和最广泛使用的实现。它是用 C 语言编写的,因此得名 “CPython”。...主要特性和优势 广泛兼容性:作为 Python 的默认实现,几乎所有的第三方库都首先确保它们在 CPython 上能够正常工作。...社区支持:CPython 拥有庞大而活跃的开发者社区,这意味着任何 bug 快速修复和新功能的迭代速度都比较快。...扩展与集成:对于需要将 Python 与其他语言集成或开发高性能模块的情况,了解 CPython 的内部结构和扩展接口是必须的。...对于那些追求程序极致性能、或需要与其他语言混合编程环境工作的高级用户来说,则可能需要更深入地掌握 CPython 相关知识。

    98800

    微软裁撤 Python 之父的嫡系核心团队,CPython 团队没了

    多位 CPython 核心贡献者离开 Faster CPython 团队由 Python 之父 Guido van Rossum 和核心开发者 Mark Shannon、Michael Droettboom...然而就在昨日,CPython 核心开发人员 Brett Cannon 在 LinkedIn 透露,来自 Faster CPython 团队的 3 名核心开发人员都被卷入微软刚刚宣布的全球裁员中,包括 Eric...公开资料显示,Eric Snow 自 2012 年起成为 CPython 核心开发者,2021 年初成为微软 Faster CPython 的成员,专注于提升 Python 的性能。...Mark Shannon 此前担任 Faster CPython 团队的技术主管,从 2010 年起为 CPython 项目贡献力量,其精通 Python 性能研究,并在 2020 年提出了“花 4 年时间把...去年,谷歌也传出解雇了整个 Python 语言团队的消息, CPython 核心开发者 Thomas Wouters 在随后发帖回应证实。

    41610

    Python脚本分析CPU使用情况

    测量CPU使用率 对于这篇文章,我将主要使用与内存分析中使用脚本相同的脚本,具体如下: ?...cProfile 在讨论CPU分析时,最常用的工具之一是cProfile,主要是因为它内置在CPython2和PyPy2中。...CPython2的用法很简单: ? 如果您使用PyPy2: ? 其输出如下: ? 即使使用这个文本输出,很容易看到我们的脚本多次调用了list.append方法。...作为一个简单的脚本,我们只需要重写我们的脚本,具体的如下所示: ? 如果我们使用CPython2测量我们脚本的时间, ? 还有PyPy2: ?...vprof(CPython2)/ pypy -m pip install vprof(PyPy),然后调用它: 在CPython2上,显示代码散热图(第一个调用如下)和代码分析(下面的第二个调用):

    1.7K50

    一文读懂 Python 编译器生态:从 CPython 到 PyPy,解锁代码运行的核心动力

    当你从 Python 官网下载安装包、用 python 命令运行脚本时,背后工作的就是 CPython。...适用场景: 90% 以上的日常开发:Web 后端(Django/Flask)、数据分析脚本、自动化工具等; 需要兼容主流库的项目:几乎所有 Python 第三方库(如 Pandas、TensorFlow...高度兼容 CPython:PyPy 几乎支持所有 Python 语法特性,甚至能直接运行大多数基于 CPython 开发的脚本。...,PyPy 的启动速度略慢于 CPython,短脚本可能体现不出优势。...优势:对纯 Python 代码的兼容性较好,适合快速将脚本转换成高性能程序。 局限:不支持动态特性(如 eval、动态添加属性),对复杂库的支持有限。 五、如何选择适合自己的 Python 编译器?

    78210
    领券