Python的统计分析器
项目描述
此包提供了一个简单的Python统计分析器。
Python的默认分析器已经使用了lsprof多年。这是一个Instrumenting分析器,这意味着它在每个感兴趣的操作上保存数据。在lsprof的情况下,它在函数进入和退出时运行。这存在一些问题:由于频繁采样,它可能会很昂贵,并且它对函数内部的“热点”视而不见。
相比之下,statprof 会定期(默认每秒1000次)采样调用栈,并且可以正确追踪函数内部的行号。这意味着,如果你有一个包含两个热点循环的50行函数,statprof 很可能能够准确地报告它们。
如何获取
使用pip!
pip install statprof-smarkets
警告:它使用 statprof 作为Python模块名称,如果已安装原始的statprof,则会发生冲突。
GitHub项目页面:https://github.com/smarkets/statprof
基本用法
使用 statprof 很容易开始。
import statprof
statprof.start()
try:
my_questionable_function()
finally:
statprof.stop()
statprof.display()
或者使用上下文管理器
import statprof
with statprof.profile():
my_questionable_function()
或者从命令行运行
$ python -m statprof script.py # or $ python -m statprof -m script # or (this may depend on bash because https://gnu.ac.cn/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 使用Unix的 itimer 信号功能,因此目前不支持Windows。(欢迎提交改进可移植性的补丁。)
实现说明
statprof 分析器通过将Unix分析信号 ITIMER_PROF 设置为在调用 reset() 时定义的间隔后触发来工作。当信号触发时,将运行一个采样程序,该程序查看当前正在执行的程序,然后沿着栈向上爬,并对遇到的每个帧,增加该帧的代码对象的采样计数。请注意,如果在给定的栈中遇到多次相同的程序,它只计算一次。采样完成后,分析器将分析定时器重置,以便在适当的间隔后再次触发。
同时,分析器通过 os.times() 跟踪在 start()/stop() 块内代码执行时经过的CPU时间(系统时间和用户时间 - 这也是 ITIMER_PROF 跟踪的内容)。
分析器还尝试(尽可能)避免计数或计时其自身的代码。
变更日志
0.2.0
分支
重构
添加了可配置的显示格式(默认显示完整路径)
可以从命令行运行statprof下的整个脚本(感谢 Vincent Driessen 和 Antony Lee)
添加了对 python -mstatprof -c cmd 调用的支持(感谢 Antony Lee)
历史
该软件包最初由 Andy Wingo 编写和发布。由 Alex Frazer 转移到现代Python,并由 Jeff Muizelaar 发布到GitHub。由 Bryan O’Sullivan 维护,由于软件包不再维护,因此由 Smarkets 分支。
报告错误、提交补丁
请使用 GitHub问题跟踪器 报告错误。
如果你想要贡献补丁,请这样做 - 源代码位于GitHub上,因此请只需发起一个pull请求。
$ git clone git://github.com/smarkets/statprof
项目详情
下载文件
下载适用于您平台的文件。如果您不确定该选择哪一个,请了解更多关于 安装包 的信息。
源代码分发
构建分发
statprof-smarkets-1.0.0.tar.gz 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | b1ecadfb86ead5c75d987fbc8cc0f53e1a3a6c6ea644918a67b3e8bb5036372f |
|
MD5 | 723d9c727da43a342042fe00486857d9 |
|
BLAKE2b-256 | 912d47e9c0ec4093242c2fb3b216c2379d2ef29df92275ebc234c2f8bd148eef |
statprof-smarkets-1.0.0.linux-x86_64.tar.gz 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | a332353bd2ea39620e0ee9f9b1999cb382800a7ad1edc66eea23bac9b24e3699 |
|
MD5 | 04da8b484e805cbf83b02006cac3e814 |
|
BLAKE2b-256 | d1e0dfbd5c4915ed01829e932a1b8706b4989ceaf4e499a6c0c0ff430c88e198 |