cProfile是从Python 2.5版本开始引入的C语言扩展模块。该模块可用来对代码进行确定性性能分析(deterministic profiling)。确定性性能分析意味着对时长的测量是精确的,没有采用抽样的方式。与此形成对照的是统计性能分析(statistical profiling),其特点是利用随机抽样来估算测量结果。我们将用cProfile分析一个小的NumPy程序,其功能是对一个由随机数构成的数组进行转置。
具体步骤
和之前的攻略一样,我们需要一段待分析的代码。
- 编写待分析的代码。
编写transpose
函数。该函数创建一个由随机数构成的数组并对其进行转置。
- 运行分析器。
运行分析器时,需要把待分析的函数作为输入参数。
本攻略的完整代码如下。
对于一个1000×1000的数组,我们得到如下输出结果。
输出结果中的各个列和用IPython进行性能分析中使用p
选项后的输出相同。