python的统计分析
statprof-smarkets的Python项目详细描述
这个包为python提供了一个简单的统计分析器。
python的默认profiler已经lsprof好几年了。这是 一个instrumenting分析器,这意味着它在 感兴趣的行动。对于lsprof,它在函数入口处运行 然后退出。这有问题:由于频繁 采样,并且它对函数内的热点是盲的。
相反,statprof定期(通过 默认情况下,每秒1000次),并正确跟踪行号 在函数中。这意味着如果你有一个50行函数 包含两个热循环,statprof可能会同时报告它们 准确地说。
注意
这个软件包在windows上还不能工作!见 下面是实现和可移植性的详细说明。
如何获得它
使用PIP!
pip install statprof-smarkets
警告:它使用statprof作为python模块名,因此这将与 如果存在,则为原始Statprof安装。
github项目页面:https://github.com/smarkets/statprof
基本用法
很容易开始使用statprof:
importstatprofstatprof.start()try:my_questionable_function()finally:statprof.stop()statprof.display()
或者使用ContextManager:
importstatprofwithstatprof.profile():my_questionable_function()
或从命令行:
$ python -m statprof script.py # or $ python -m statprof -m script # or (this may depend on bash because http://www.gnu.org/software/bash/manual/bashref.html#ANSI_002dC-Quoting) $ python -m statprof -c "import hashlib"$'\n'"for i in range(10000): hashlib.md5(str(i)).hexdigest()"
要获得更全面的帮助,请运行pydoc statprof。
便携性
因为statprof使用unixitimersignal工具,所以它不 当前在Windows上工作。(提高可移植性的补丁将是 非常欢迎。)
实施说明
statprofprofiler通过设置unix分析信号来工作 ITIMER_PROF在调用 reset()。当信号触发时,将运行一个采样例程 查看正在执行的当前过程,然后向上爬行 堆栈,对于遇到的每个帧,都会增加该帧的 代码对象的样本计数。注意,如果遇到过程 在一个给定的堆栈上多次,它只被计数一次。之后 采样完成后,探查器将探查计时器重置为激发 在适当的时间间隔后再次。
同时,分析器通过os.times()跟踪CPU的数量 时间(系统和用户–这也是ITIMER_PROFtracks)有 在start()/^{tt13}内执行代码时经过$ 封锁。
探查器还尝试(尽可能)避免计数或 为自己的代码计时。
更改日志
0.2.0
- 分叉
- 重构
- 添加了可配置的显示格式(现在默认显示完整路径)
- 能够从命令行在statprof下运行整个脚本(感谢 Vincent Driessen和 Antony Lee
- 添加了对python -mstatprof-c cmd调用的支持(感谢 Antony Lee)
历史记录
这个包最初是由 Andy Wingo。 它由alex frazer移植到现代python,并由 杰夫·穆泽拉尔。由Bryan O’Sullivan维护,由 由于包装不再维护而引起的小市场。
报告错误,提供修补程序
请使用GitHub issue tracker报告错误。
如果你想贡献补丁,请做-源是在 Github,所以请发出一个请求。
$ git clone git://github.com/smarkets/statprof