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 代码的想法或只是为了学习一般分析的人推荐这个。