《CPython Internals》读后感

news/2025/1/27 15:09:37/文章来源:https://www.cnblogs.com/codists/p/18692613

一、 为什么选择这本书?

Python 是本人工作中最常用的开发语言,为了加深对 Python 的理解,更好的掌握 Python 这门语言,所以想对 Python 解释器有所了解,看看是怎么使用C语言来实现Python的,以期达到对 Python语言的掌握达到精通的程度,。

关于 Python 解释器的书不多——Anthony Shaw写的《CPython Internals》,陈儒写的《Python源码剖析》。

因为《CPython Internals》在2021年出版,使用的是Python3,比较新。而《Python源码剖析》在 2008 年出版,使用的是Python 2.5,比较古早。所以先阅读《CPython Internals》。

二、这本书写了什么?

这本书以 CPython 3.9 为例,讲解了编译基本操作(configure, make),内存管理(引用技术、垃圾回收), 并行和并发,基本数据类型(builtin types, dict),测试(unitest),调试(debug), 基准测试(timeit,pyperformance),性能分析(cProfile)。

从2025年1月6日至2025年1月26日,期间花了20天阅读完《CPython Internals》。

三、这本书特点

这是一本写得很混乱,阅读起来让人感到很痛苦的书。

当我在"About the Author"章节看到“Anthony has been programming since the age of 12 and found a love for Python while trapped inside a hotel in Seattle, Washington, 15 years later”——当看到这里,我是很兴奋的:作者 12 岁开始学习编程,27 岁接触 Python,具有这么丰富的编程经验的人那妥妥的是个大佬。但是,阅读完这本书后,我只能说和我想的不一样。

整本书充满很多无意义的口水话。例如:p13,CPython gives the developer writing Python code the platform to write scalable and performant applications。这句话包含形容词 scalabe 和 performant,这种形容词用在哪里都可以,说了等于没说。

整本书很多内容没有说到本质。例如:The first is profile, a pure-Python profiler, and the second, cProfile, a faster profiler written in C. In most cases, cProfile is the best module to use——在大多数情况下,cProfile是最好的模块,既然如此,那么为什么还要使用 profiler 呢?仅仅因为 cProfiler 是 C 语言写,更快?

很多概念没有明确定义。示例:The benchmark suite is the tool to use when comparing the complete performance of Python. The Python Benchmark suite is a collection of Python applications designed to test multiple aspects of the Python runtime under load.如果按照作者所给的定义“The benchmark suite is the tool to use when comparing the complete performance of Python.”,那么 timeit 也算一个 benchmark suite, 但是,timeit 不能算作 benchmark suie,可以算一个 benchmark tool。

总而言之,没必要把时间浪费在这本书上面。

四、这本书适合什么样的人?

不建议阅读。

五、推荐指数

按照5 星的标准,本书推荐指数 1 颗星。

六、参考资料

1. 编程

(1) Anthony Shaw,《CPython Internals》:https://book.douban.com/subject/35405785/

2. 英语

(1) Etymology Dictionary:https://www.etymonline.com

(2) Cambridge Dictionary:https://dictionary.cambridge.org

欢迎搜索及关注:编程人(a_codists)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/876236.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

文档智能扫描,提升无纸化办公效率

随着无纸化办公的推广和移动设备的普及,用户迫切需要将纸质文档快速、准确地转换成电子格式,以提高工作效率和信息管理的便捷性。同时,用户将文档扫描成电子版后,可以自行通过加密和访问控制提高电子文档的安全性,以满足法律和合规要求。 HarmonyOS SDK 场景化视觉服务(V…

Grafana快速入门指南上篇

一.Grafana安装 1.下载grafana我们课堂实验均以Grafana 9.X版本实验的,更高版也可以实验,但是部分插件可能兼容性不太友好。下载地址:https://grafana.com/grafana/download/9.5.212.安装grafana apt-get install -y adduser libfontconfig1 muslwget https://dl.grafana.com…

dvwa靶场-----靶场搭建

dvwa靶场-----靶场搭建 一.环境准备: 第一步:下载PHPstudy: 找到PHPstudy官网,下载windows版小皮面板,然后安装。官网下载地址:https://www.xp.cn/PHPstudy第二步:安装PHPstudy并配置环境: 安装好小皮面板后打开Apache和MySQL, 访问127.0.0.1得到如下界面就是建立成功二.DVWA…

API Hooking

一、介绍 API hook(钩取)是一种用来拦截和修改 API 函数行为的技术。它常用于调试、逆向工程和游戏作弊。API 钩取涉及用一个自定义版本替换 API 函数的原始实现,该自定义版本在调用原始函数之前或之后执行一些附加动作。这允许人们在不修改程序源代码的情况下修改其行为 。…

杨立昆谈 Deepseek:开源正在超越私有;SpeechGPT 2.0-preview:情景智能拟人化实时交互系统

开发者朋友们大家好:这里是 「RTE 开发者日报」 ,每天和大家一起看新闻、聊八卦。我们的社区编辑团队会整理分享 RTE(Real-Time Engagement) 领域内「有话题的 新闻 」、「有态度的 观点 」、「有意思的 数据 」、「有思考的 文章 」、「有看点的 会议 」,但内容仅代表编辑…

【nginx】界面化管理Nginx站点的两种方式

前言 之前在文章🧲NginxUI:界面化管理Nginx的工具中简单介绍了NginxUI工具和搭建,本文则探讨怎么使用NginxUI来做界面化的站点管理。 使用docker启一个nginx-ui用于测试,启动命令: docker run -dit \--name=nginx-ui \--restart=always \-e TZ=Asia/Shanghai \-v /mnt/us…

20250127_C++高级编程

对象初始化1 类的4个常见的构造函数1.1 类对象初始化的3个函数1.1.1 默认构造函数 FunctionClass(int data = 10) :m_data(data) {cout << "FunctionClass(int)" << endl; }1.1.2 拷贝构造函数 FunctionClass::FunctionClass(const FunctionClass&…

vsCreator笔记_I/O控制

1, I/O接口端子说明 2, I/O接口功能分配 3, 以上为默认设置, 也可通过vsCreator环境设置\I/O端子设置 4, 输入信号接线示意图5, 输出信号接线示意图

Windows bat批处理读取文件增加行号

前言全局说明Windows bat批处理读取文件增加行号一、说明 1.1 环境: Windows 11 家庭版 23H2 22631.3737 Microsoft Windows [版本 10.0.22631.4751]二、文件内容 2.1 来源文件内容 文件名:source.ini a bCdE2.2 批处理内容 文件名:line_num.bat @echo offset "INI_FILE…

Linux 中 如何将time命令输出的时间信息保存在文件中

001、 通常做法[root@localhost test]# time seq 10 > a.txt 2> xxx ## 完全追加至xxxreal 0m0.002s user 0m0.000s sys 0m0.002s [root@localhost test]# ls a.txt xxx [root@localhost test]# cat a.txt 1 2 3 4 5 6 7 8 9 10 [root@localhost test]# c…

ABCDE:一个使用Kotlin编写的OpenHarmony逆向工具包

ABCDE是一个使用Kotlin编写的OpenHarmony逆向工具包,目前已经实现的功能为解析方舟字节码文件中 的类信息、方法信息、字面量数组信息以及对方法进行反汇编,解析资源索引文件等功能。 该工具核心功能由纯kotlin(jvm)实现,因此可以提供平台无关的jar包供java工程引用并二次…