CPython 源码阅读 - 属性访问

本文所使用代码为 CPython 3.7.4,commit sha 为 e09359112e250268eca209355abeb17abf822486 本文探讨 Python 中当使用 obj.attr 的语法访问对象属性的时候会发生什么,是对本人 16 年所写的 Python 中的 attribute 和 property 的修正与补充 我们先从 bytecode »

write in Python

本文研究 Python PEP-3116 New I/O 引入后,Python 层面的 write 和 syscall write 之间的关系。文中所使用的 Python 版本为 3.7.2,commit sha 为 9a3ffc0492d1310ead9ce8f5ee678c26b20a338d Binary Mode »

CPython 源码阅读 - send/yield

本文代码取自 CPython 3.6.3, commit sha 为 2c5fed86e0cbba5a4e34792b0083128ce659909d 先放一个 Generator 的示例 def g(): yield 2 gen = g() 每一 Generator 对象都含有几个特别的属性,可以从万能的 inspect 模块的文档 中找到 gi_ »

GIL 究竟是什么

本文代码取自 CPython 3.6.3, commit sha 为 2c5fed86e0cbba5a4e34792b0083128ce659909d 本篇文章分析 Python 的多线程实现,侧重于 GIL 方面。由于本人 C 水平及 Python 水平有限,理解可能会有偏差,如果发现希望能够邮件告知 Abstract 先来看 GIL 的定义 »

CPython 源码阅读 - dict

本文所用代码取自 CPython 3.6.3 commit sha 2c5fed86e0cbba5a4e34792b0083128ce659909d 和 dict 相关的源码大致位于三个文件 Include/dictobject.h Objects/dict-common.h Objects/dictobject.c 首先确保阅读自带说明文件 Objects/dictnotes.txt,这里摘取部分的内容 dict »