前言

前言

Packt出版社的朋友们让我产生了写作本书的想法。他们希望有人可以深入探讨Python高性能这个错综复杂的问题,介绍与之相关的所有话题,包括代码性能分析、现有的性能分析工具(比如性能分析器和其他性能增强技术),甚至包括标准Python实现的其他版本。

因此,欢迎你阅读本书。在本书中,我们将介绍与程序性能优化有关的一切。与性能优化这个主题相关的知识并不是阅读本书的必要前提(当然了解也没有坏处),但是关于Python编程语言的知识是必需的,尤其是对于一些专门优化Python代码的章节而言。

我们首先将会介绍什么是性能分析,性能分析如何在项目开发周期中发挥作用,以及通过在项目中进行性能分析实践能够取得的效果。紧接着将介绍分析性能所需的核心工具(性能分析器和可视化性能分析器)。然后会讨论一系列性能优化技术,最后一章会介绍一个具有实际意义的优化示例。

本书内容

第1章,性能分析基础,为没有关注过性能分析艺术的人们介绍相关的基础知识。

第2章,性能分析器,介绍如何使用贯穿全书的核心分析工具。

第3章,可视化——利用GUI理解性能分析数据,介绍如何使用KCacheGrind/pyprof2calltree和RunSnakeRun工具,并且通过不同的可视化技术帮助开发者理解cProfile的输出结果。

第4章,优化每一个细节,介绍性能优化的基本过程和一系列值得推荐的好习惯,每个Python开发者在尝试其他优化手段之前都应该优先采用这些做法。

第5章,多线程与多进程,介绍多线程和多进程,并论述二者的使用方法和适用场景。

第6章,常用的优化方法,介绍如何安装和使用Cython和PyPy,优化代码性能。

第7章,用Numba、Parakeet和pandas实现极速数据处理,介绍针对处理数据的Python脚本的性能优化工具。这些专用工具(Numba、Parakeet和pandas)可以提升数据处理效率。

第8章,付诸实践,提供一个性能分析的实际示例,探索性能瓶颈,并通过书中介绍过的工具和技术消除瓶颈。总之,我们将会利用每项技术对比结果。

本书需要的工具

在运行本书中的代码之前,你的操作系统中必须安装以下工具:

  • Python 2.7

  • line_profiler 1.0b2

  • KCacheGrind 0.7.4

  • RunSnakeRun 2.0.4

  • Numba 0.17

  • 最新版本的Parakeet

  • pandas 0.15.2

目标读者

由于本书涵盖了Python代码性能分析和优化的方方面面,所以不同水平的Python开发者都能从中受益。

唯一的要求是读者要具备Python编程语言的一些基础知识。

排版约定

本书中用不同的文本样式来区分不同种类的信息。下面给出了这些文本样式的示例及其含义。

正文中的代码和用户输入会这样显示:“我们可以打印/收集PROFILER函数里我们觉得有意义的内容。”

代码块示例如下:

import sys

def profiler(frame, event, arg):
    print 'PROFILER: %r %r' % (event, arg)

sys.setprofile(profiler)

当我们希望你注意代码块中的某些部分时,相关的行或者文字会被加粗:

Traceback (most recent call last):
    File "cprof-test1.py", line 7, in <module>
        runRe() ...
    File "/usr/lib/python2.7/cProfile.py", line 140, in runctx
        exec cmd in globals, locals
    File "<string>", line 1, in <module>
NameError: name 're' is not defined

命令行输入或输出将会这样表示:

$ sudo apt-get install python-dev libxml2-dev libxslt-dev

新术语重点词汇均采用楷体字表示。

 这个图标表示警告或需要特别注意的内容。

 

 这个图标表示提示或者技巧。

读者反馈

我们非常欢迎读者的反馈。如果你对本书有些想法,有什么喜欢或是不喜欢的,请反馈给我们。这将有助于我们开发出能够充分满足读者需求的图书。

一般的反馈,请发送电子邮件至feedback@packtpub.com,并在邮件主题中注明书名。

如果你在某个领域有专长,并有意编写一本书或是贡献一份力量,请参考我们的作者指南,地址为http://www.packtpub.com/authors

客户支持

你现在已经是Packt引以为傲的读者了,为了能让你的购买物有所值,我们还为你准备了以下内容。

下载示例代码

你可以用你的账户从http://www.packtpub.com下载所有已购买Packt图书的示例代码文件。如果你从其他地方购买本书,可以访问http://www.packtpub.com/support并注册,我们将通过电子邮件把文件发送给你。

下载本书的彩色图像

我们也提供了本书的PDF文件,里面包含了本书的截屏和流程图等彩色图片。彩色图片将能帮助你更好地理解输出的变化。你可以通过https://www.packtpub.com/sites/default/files/downloads/9300OS_GraphicBundle.pdf下载。

勘误

虽然我们已尽力确保本书内容正确,但出错仍旧在所难免。如果你在我们的书中发现错误,不管是文本还是代码,希望能告知我们,我们不胜感激。这样做,你可以使其他读者免受挫败,帮助我们改进本书的后续版本。如果你发现任何错误,请访问http://www.packtpub.com/submit-errata提交,选择你的书,点击勘误表提交表单的链接,并输入详细说明。勘误一经核实,你的提交将被接受,此勘误将上传到本公司网站或添加到现有勘误表。从http://www.packtpub.com/support选择书名就可以查看现有的勘误表。

侵权行为

版权材料在互联网上的盗版是所有媒体都要面对的问题。Packt非常重视保护版权和许可证。如果你发现我们的作品在互联网上被非法复制,不管以什么形式,都请立即为我们提供位置地址或网站名称,以便我们可以寻求补救。

请把可疑盗版材料的链接发到copyright@packtpub.com。

非常感谢你帮助我们保护作者,以及保护我们给你带来有价值内容的能力。

问题

如果你对本书内容存有疑问,不管是哪个方面,都可以通过questions@packtpub.com联系我们,我们将尽最大努力来解决。

电子书

扫描如下二维码,即可获得本书电子版。

{%}

目录

  • 版权声明
  • 译者序
  • 前言
  • 致谢
  • 第 1 章 性能分析基础
  • 第 2 章 性能分析器
  • 第 3 章 可视化——利用GUI理解性能分析数据
  • 第 4 章 优化每一个细节
  • 第 5 章 多线程与多进程
  • 第 6 章 常用的优化方法
  • 第 7 章 用Numba、Parakeet和pandas实现极速数据处理
  • 第 8 章 付诸实践