跳转到主要内容

Python的统计分析器

项目描述

https://travis-ci.org/smarkets/statprof.svg?branch=master https://img.shields.io/pypi/v/statprof-smarkets.svg

此包提供了一个简单的Python统计分析器。

Python的默认分析器已经使用了lsprof多年。这是一个Instrumenting分析器,这意味着它在每个感兴趣的操作上保存数据。在lsprof的情况下,它在函数进入和退出时运行。这存在一些问题:由于频繁采样,它可能会很昂贵,并且它对函数内部的“热点”视而不见。

相比之下,statprof 会定期(默认每秒1000次)采样调用栈,并且可以正确追踪函数内部的行号。这意味着,如果你有一个包含两个热点循环的50行函数,statprof 很可能能够准确地报告它们。

如何获取

使用pip!

pip install statprof-smarkets

警告:它使用 statprof 作为Python模块名称,如果已安装原始的statprof,则会发生冲突。

GitHub项目页面:https://github.com/smarkets/statprof

PyPI页面:https://pypi.python.org/pypi/statprof-smarkets

基本用法

使用 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 DriessenAntony 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 (18.4 kB 查看哈希值)

上传时间 源代码

构建分发

statprof-smarkets-1.0.0.linux-x86_64.tar.gz (13.4 kB 查看哈希值)

上传时间 源代码

AWSAWS 云计算和安全赞助商 DatadogDatadog 监控 FastlyFastly CDN GoogleGoogle 下载分析 MicrosoftMicrosoft PSF赞助商 PingdomPingdom 监控 SentrySentry 错误日志 StatusPageStatusPage 状态页面