55. VM 是如何执行 ByteCode 的?(2)
终于,我们进入了 PyEval EvalFrameDefault 函数,这是 Python VM 最核心部分,在这里我们将于 VM 的执行零距离接触。 opcode 和 opargs ByteCode 的最小单元是 …
阅读全文Vibe coding 仙人,什么好玩研究什么,不限于 Python、AI、美食、美景、美人....

终于,我们进入了 PyEval EvalFrameDefault 函数,这是 Python VM 最核心部分,在这里我们将于 VM 的执行零距离接触。 opcode 和 opargs ByteCode 的最小单元是 …
阅读全文现在我们已经深入到 ByteCode 在 Python 的中表示:PyCodeObject,是的,Python 自身的字节码也是对象。PyCodeObject 中提供了运行 Python 程序所需要的一切信息,最终由 …
阅读全文字节码 (ByteCode) 是一组精心构建的二进制表示,其中主要包含两种信息: 执行什么操作; 操作的参数; 除此之外 Python 中的各种常量、名称、变量也在字节码中。 Python 的面向对象非常彻底,字节码的管 …
阅读全文上一节我们说到, .py 源码先后转换为 AST、ByteCode,最终到了 VM 这里付诸执行。有的朋友认为字节码的存在,是一种加速优化技术,某种程度上这样说是合理的,但这并不意味着 VM 可以同时支持 Python …
阅读全文对于 Python 是一门优雅的语言,这一点应该不会有太多人反对,随着我们对 CPython 实现的研究,不得不说 Python 的优雅一直渗透到它的底层,在 Python 的 C 实现这一层,几乎全部以 Python …
阅读全文最近在研究 CPython,深入到 Python VM 需要大量借助 GDB 调试,但是问题在于,Python 的底层实现中,大量使用了 Python C API 和各种 Object,如果试图通过 GDB 指令查看 …
阅读全文有关 iterable 和 iterator 的定义介绍已经很多了: 实现 iter 或者 getitem 方法的对象是 iterable 对象; 实现 iter 和 next 方法的对象是 iterator 对象; 那 …
阅读全文Set 的意思是集合,在 Python 的实现中,Set 的 Key 与 Dict 的 Key 相似性相当高,也难怪一些作者认为 “Set 是 value 为空的特殊 Dict”。前面两节已经说明了 Set 元素的添加、 …
阅读全文Set 是无序容器,它的插入顺序与迭代(或者 print)输出的顺序不保证与插入顺序一致,与 Dict 类似的问题,Set 的输出顺序是如何决定的呢? 首先我们从 Set 的输出开始寻找蛛丝马迹,在 Dict 的研究中, …
阅读全文让我们再次请出 PySetObject 图示: 其中最关键的是: fill:有效元素 + dummy 元素数量,dummy 元素与 Dict 中类似,是删除元素的遗迹。 used: 实际有效元素数量。 Set 采用与 …
阅读全文市场长期将 CUDA 软件生态视为 NVIDIA 最深的护城河,但随着 Triton 等高级抽象编译框架的普及,底层硬件软件栈正在被“屏蔽”。竞争对手通过单卡算 …
1. DRAM与内存墙 2017 年,NVIDIA V100 搭载 HBM2 显存,带宽 0.9TB/s,峰值算力 125 TFLOPS。2023 年,H100 …
开发者通常为了提高内存使用效率,或者避免内存泄漏,需要将内存池化管理。稍复杂一点的系统,一般都会有自己的内存管理机制,我在研读源码的时候,比较习惯先看内存管理模 …
推荐书籍 这是我从大量算法书籍中精心筛选出来的,它 重视算法原理的理解, 用生动的例子替代晦涩的公式证明, 绘图也非常有趣, 对非专业开发者十分友好。 我的 …
封神?一点都不夸张! 如果对所有算法排位,傅立叶变换绝对可以封神。傅立叶变换有多牛?!相当于给人类安了第三只眼!基本上不是人类能搞出来的东西。凡人,准备 …