Python性能分析指南(18)

发表于:2013-11-12来源:开源中国社区作者:袁不语点击数: 标签:性能测试
1 In [1]: from primes import primes 2 In [2]: %mprun -f primes primes(1000) 3 In [3]: %lprun -f primes primes(1000) 这样可以节省你很多时间和精力,因为你的源代码不需要为使用这
1 In [1]: from primes import primes
2 In [2]: %mprun -f primes primes(1000)
3 In [3]: %lprun -f primes primes(1000)

这样可以节省你很多时间和精力,因为你的源代码不需要为使用这些分析命令而进行修改。

 
 

内存泄漏在哪里?

cPython解释器使用引用计数做为记录内存使用的主要方法。这意味着每个对象包含一个计数器,当某处对该对象的引用被存储时计数器增加,当引用被删除时计数器递减。当计数器到达零时,cPython解释器就知道该对象不再被使用,所以删除对象,释放占用的内存。

如果程序中不再被使用的对象的引用一直被占有,那么就经常发生内存泄漏。

查找这种“内存泄漏”最快的方式是使用Marius Gedminas编写的objgraph,这是一个极好的工具。该工具允许你查看内存中对象的数量,定位含有该对象的引用的所有代码的位置。

 

一开始,首先安装objgraph:

1 pip install objgraph
一旦你已经安装了这个工具,在你的代码中插入一行声明调用调试器:
1 import pdb; pdb.set_trace()
最普遍的对象是哪些?

在运行的时候,你可以通过执行下述指令查看程序中前20个最普遍的对象:

view source

原文转自:http://www.oschina.net/translate/python-performance-analysis