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

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

    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.6K30

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

    95610

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

    在动态语言的性能困境中,CPython的解释执行模式存在难以规避的指令冗余,每一条字节码都需要经过解释器的解码、映射、执行等多个步骤,即便简单的循环迭代操作,也会因重复的解释流程产生大量额外开销,而PyPy...,出现非线性的性能跃升,部分场景下的执行效率甚至能逼近静态编译语言的水准,这种无需开发者手动修改代码的性能跃迁,恰恰印证了PyPy超越CPython的核心逻辑—不是以牺牲Python的动态特性为代价换取速度...PyPy的类型特化机制,是其突破CPython动态类型性能桎梏的核心技术支点,这种运行时的自适应优化能力,让动态类型语言摆脱了重复类型校验带来的效率损耗。...PyPy的自适应编译策略,凭借其精准的运行时监控与动态优化能力,让其在不同场景下都能精准命中性能痛点,这是CPython的固定执行模式无法企及的核心优势。...PyPy的持续进化之路,本质上是动态语言执行模型的不断革新与突破,其对CPython性能瓶颈的系统性击穿,为Python生态打开了更广阔的应用空间。

    5600

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

    Python 解释器有多个主要实现版本,其中,CPython 的使用最为广泛。CPython,作为 Python 的官方解释器,是用 C 语言编写的,并在 Python 社区得到了广泛支持和贡献。...这种方法结合了提前编译和解释的优点,既提高了性能,又保持了解释型语言的灵活性和跨平台可用性。...C 语言的高效性和强大的底层操作能力使其成为编写性能关键代码的理想选择。...例如,math 模块提供了对 C 标准定义的数学函数的访问、os 模块提供对文件和目录操作、socket 模块中的网络编程等,都是用 C 语言实现的,以实现更高的执行效率和更好的性能。...Python 的内存管理为开发人员提供了便利,自动处理了许多底层细节,减少了内存泄漏,提高了程序性能。

    1.8K01

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

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

    57710

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

    一、CPython CPython 是 Python 编程语言的官方和最广泛使用的实现。它是用 C 语言编写的,因此得名 “CPython”。...这对于性能关键型任务非常有用。 ctypes 是 Python 的外部函数库,提供与 C 兼容的数据类型,并允许调用 DLL 或共享库中的函数。...性能优化:理解 CPython 的工作机制有助于诊断和优化性能问题。例如,知道对象模型、垃圾回收机制以及如何正确利用内置数据结构等知识可以显著提升程序运行效率。...扩展与集成:对于需要将 Python 与其他语言集成或开发高性能模块的情况,了解 CPython 的内部结构和扩展接口是必须的。...对于那些追求程序极致性能、或需要与其他语言混合编程环境工作的高级用户来说,则可能需要更深入地掌握 CPython 相关知识。

    92000

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

    在裁掉的开发者行列中,还包括推动了过去几个 Python 版本中大部分性能改进的 Faster CPython 团队人员。除软件工程师外,受此次裁员冲击最大的是许多负责软件项目的人员。...自成立起,Faster CPython 团队推动了过去几个 Python 版本中大部分性能改进,包括专用解释器、JIT 编译器、垃圾回收机制(GC)优化、栈引用(stackrefs)等。...公开资料显示,Eric Snow 自 2012 年起成为 CPython 核心开发者,2021 年初成为微软 Faster CPython 的成员,专注于提升 Python 的性能。...,从而为 Python 在多核处理器上的性能提升奠定了基础。...Mark Shannon 此前担任 Faster CPython 团队的技术主管,从 2010 年起为 CPython 项目贡献力量,其精通 Python 性能研究,并在 2020 年提出了“花 4 年时间把

    36810

    这本 CPython 书把内部实现全讲透了!

    这些秘密都藏在 CPython 中! 这是一本怎样的书? Python 之父 Guido van Rossum 推荐、CPython 核心开发者 Carol Willing 作序!...本书从语法解析、编译器等基础概念出发,深入求值循环、内存管理等 CPython 解释器实现细节。轻松!简明!豁然开朗!手把手带你重新编译 CPython,了解 Python 的内部实现。...想象一下,当你写代码的时候遇到性能瓶颈或调试难题时,能够从解释器层面找到解决方案,多酷!...Python开发者:提升技术深度,优化代码性能。 编程爱好者:探索编程语言实现原理。 计算机科学学生:深入学习编程语言和解释器设计。...——Carol Willing,CPython 核心开发者,CPython 指导委员会成员 这本书将带你探秘 Python 幕后,尽览 CPython 内核奥义,深入了解底层的内存管理、并发和性能调优技巧

    24900

    Python 3.11 ,即将变得更快!

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

    1K10

    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编译器以获得更快的性能。

    80220
    领券