“掌握 Python 高性能”书评

一则或许对你有用的小广告

欢迎加入小哈的星球 ,你将获得:专属的项目实战 / Java 学习路线 / 一对一提问 / 学习打卡/ 赠书活动

目前,正在 星球 内带小伙伴们做第一个项目:全栈前后端分离博客项目,采用技术栈 Spring Boot + Mybatis Plus + Vue 3.x + Vite 4手把手,前端 + 后端全栈开发,从 0 到 1 讲解每个功能点开发步骤,1v1 答疑,陪伴式直到项目上线,目前已更新了 204 小节,累计 32w+ 字,讲解图:1416 张,还在持续爆肝中,后续还会上新更多项目,目标是将 Java 领域典型的项目都整上,如秒杀系统、在线商城、IM 即时通讯、权限管理等等,已有 870+ 小伙伴加入,欢迎点击围观

Packt Publishing 最近寄给我一本 Fernando Doglio 的 《精通 Python 高性能》 。在这本书出版之前,他们还让我担任这本书的技术审稿人。无论如何,让我们快速回顾一下,如果您觉得这听起来很有趣,您也可以查看我的完整评论!

快速复审

  • 我为什么选择它: 我是免费得到它的,但我确实觉得标题很吸引人。
  • 完成原因: 作为本书的技术审阅者,我不得不通读一遍。然而,它有很多有趣的概念,而且很短。
  • 我会把它送给: 需要了解如何提高 Python 代码效率的人。

书籍格式

您可以获得电子书(PDF、EPUB 或 MOBI)版本或 平装书

本书内容

全书共8章235页。

全面审查

当我最初阅读这本书时,我很想知道作者将如何加速他们的代码。他涵盖了各种各样的主题,这很好,但这也阻碍了本书的发展,因为没有一个主题是深入讨论的。他使用了许多小示例,并展示了如何在继续优化它们之前进行概要分析。让我们回顾一下每一章,以便您了解本书的内容。

第一章是关于分析代码的。它涵盖了统计分析和基于事件的分析之间的差异、什么是分析及其重要性、瓶颈和内存泄漏。它还涉及运行时间复杂性(线性、阶乘、二次等)和分析最佳实践。

然后我们顺理成章地进入第二章,在那里我们学习一些可以与 Python 一起使用的分析器。涵盖的两个是 cProfile(包含在 Python 中)和 line_profiler 。作者演示了使用 cProfile 测量代码的各种方法,以及如何使用 Python 的 pstats 模块,该模块用于分析从 cProfile 收到的结果。然后作者继续使用 line_profiler 和 kernprof 来分析与 cProfile 一起使用的相同(或相似)示例。我认为这是本书中最平衡的章节之一,本身就非常有趣。

第三章介绍如何使用可视化工具来帮助您了解探查器的输出。在本章中,您将了解 KCacheGrind / pyprof2calltree 和 RunSnakeRun。在大多数情况下,您只会学习如何使用这些工具来弄清楚数据的含义。

在第四章中,我们学习如何优化你的代码。涵盖的主题包括记忆化、列表理解、生成器、ctypes、加载您自己的自定义 C 库以及其他一些提示和技巧。虽然本章很短,但它有一些不错的想法,值得一读或至少略读。

第五章深入探讨多线程和多处理。您将了解每种方法的优缺点。您还将了解 Global Interpreter Lock 以及当您选择其中一种技术时它对您的影响。

第六章介绍 PyPy 和 Cython 的使用,以及它们如何用于对代码进行额外的优化。我喜欢这一章,尽管我觉得 PyPy 没有 Cython 受到那么多关注。也没有很多编码示例。

如果您喜欢数字运算,那么第七章适合您。它介绍了如何使用 Numba、Parakeet 和 pandas。坦率地说,在这三个库中,我只听说过 pandas。我个人不需要在我的工作中进行大量的数字运算,但看到每个库如何工作并大致了解它们的用途是很有趣的。

最后在第八章中,作者试图将它们放在一起。这一章可能应该是原来的两倍,这样他才能真正涵盖所有内容。但最后,它只涵盖了勉强够用,您确实会看到一个完整的示例从头到尾都得到了优化。

总的来说,我喜欢这本书。我会向任何需要优化 Python 代码的想法或只是为了学习一般分析的人推荐这个。