python的统计分析
statprof的Python项目详细描述
这个包为python提供了一个简单的统计分析器。
python的默认profiler已经lsprof好几年了。这是 一个instrumenting分析器,这意味着它在 感兴趣的行动。对于lsprof,它在函数入口处运行 然后退出。这有问题:由于频繁 采样,并且它对函数内的热点是盲的。
相反,statprof定期对调用堆栈进行采样(通过 默认情况下,每秒1000次),并正确跟踪行号 在函数中。这意味着如果你有一个50行函数 包含两个热循环,statprof可能会同时报告它们 准确地说。
<;b>;注意<;b>;:此软件包在Windows上尚不起作用!见 下面是实现和可移植性的详细说明。
基本用法
从statprof开始很容易:
import statprof
- statprof.start()
- try:
- my_questionable_function()
- finally:
- statprof.stop()
- statprof.display()
要获得更全面的帮助,请运行pydoc statprof。
便携性
因为statprof使用unix的itimer信号工具,所以它没有 当前在Windows上工作。(提高可移植性的补丁将是 非常欢迎。)
实施说明
statprof探查器通过设置unix分析信号来工作 在调用中定义的时间间隔之后离开 reset()。当信号触发时,将运行一个采样例程 查看正在执行的当前过程,然后向上爬行 堆栈,对于遇到的每个帧,都会增加该帧的 代码对象的样本计数。注意,如果遇到过程 在一个给定的堆栈上多次,它只被计数一次。之后 采样完成后,探查器将探查计时器重置为激发 在适当的时间间隔后再次。
同时,profiler通过os.times()跟踪CPU的数量 时间(系统和用户——这也是itimer_prof跟踪的内容) 当代码在start()/stop()中执行时经过 封锁。
探查器还尝试(尽可能)避免计数或 为自己的代码计时。
历史记录
这个包裹原来是 [作者:安迪·温戈](http://wingolog.org/archives/2005/10/28/profiling)。 它由alex frazer移植到现代python,并由 杰夫·穆泽拉尔。目前的维修人员是布莱恩·奥沙利文 <;bos@serpentine.com>;。
报告错误,提供修补程序
该软件包的当前维护者是bryan o'sullivan <;bos@serpentine.com>;。
请使用 [github问题跟踪器](https://github.com/bos/statprof.py/issues)。
如果你想贡献补丁,请做-源是在 Github,所以请发出一个请求。
$ git clone git://github.com/bos/statprof.py