python的统计分析

statprof-smarkets的Python项目详细描述


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

这个包为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

PYPI页:https://pypi.python.org/pypi/statprof-smarkets

基本用法

很容易开始使用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 DriessenAntony 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

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
maven通过pom文件增加最大java堆大小   java如何在Kojo IDE输出窗格中打印到同一行?   如何使用特定的JRE交付Java应用程序?   java Cordova插件调用日志找不到符号   Java上Redis哈希中的spring列表   java ThreadSafeClientConnManager不是多线程   java如何在激活器中获取IEclipseContext   java如何通过编程更改除法器偏差   在中找不到maven Java/Mvn本地资源。罐包装   JOptionPane的java用户输入验证。showInputDialog   java编辑:如何更改日期对象的日期格式?   文件编写器Java;如何覆盖   一行中包含多个值的java读取属性   java如何在安卓中使用截击上传视频