hotshot
hotshot - 高性能日志分析器
2.2版本中的新功能。
该模块为_hotshot
C模块提供了一个更好的接口。Hotshot是现有profile
模块的替代品。由于它主要用C编写,因此它应该比现有profile
模块的性能影响小得多。
注意
hotshot
模块专注于在分析数据时尽量减少开销,代价是数据后处理时间较长。对于常见的用法,建议使用cProfile
。hotshot
不会被维护,并且可能在将来从标准库中删除。
在版本2.5中进行了更改:结果应该比过去更有意义:时序核心包含一个严重错误。
注意
hotshot
分析器还没有使用线程工作。如果可能的话,使用无螺纹脚本来运行探查器来测试你感兴趣测量的代码是很有用的。
class hotshot.Profile(logfile[, lineevents[, linetimings]])
分析器对象。参数日志文件
是用于记录的配置文件数据的日志文件
的名称。参数lineevents
指定是为每个源代码行生成事件还是仅在函数调用/返回时生成事件。它默认为0
(只有日志函数调用/返回)。参数linetimings
指定是否记录时间信息。它默认为1
(存储时间信息)。
1.配置文件对象
配置文件对象具有以下方法:
Profile.addinfo(key, value)
将任意标记的值添加到配置文件输出。
Profile.close()
关闭日志文件并终止分析器。
Profile.fileno()
返回探查器日志文件的文件描述符。
Profile.run(cmd)
exec
在脚本环境中分析一个-compatible字符串。来自__main__
模块的全局变量被用作脚本的全局变量和局部变量。
Profile.runcall(func, *args, **keywords)
分析可调用的单个调用。额外的位置和关键字参数可以传递; 调用的结果被返回,并且允许异常干净地传播,同时确保在出路中禁用分析。
Profile.runctx(cmd, globals, locals)
exec
在特定环境中评估一个-compatible字符串。该字符串在分析开始之前编译。
Profile.start()
启动分析器。
Profile.stop()
停止分析器。
2.使用热门数据
2.2版本中的新功能。
该模块将热点分析数据加载到标准的pstats
Stats对象中。
hotshot.stats.load(filename)
从文件名
加载热点数据。返回pstats.Stats
类的一个实例。
See also
Module
profile
profile
模块的Stats
类
3.示例使用
请注意,此示例运行Python“基准”pystones。可能需要一些时间才能运行,并且会生成大量的输出文件。
>>> import hotshot, hotshot.stats, test.pystone
>>> prof = hotshot.Profile("stones.prof")
>>> benchtime, stones = prof.runcall(test.pystone.pystones)
>>> prof.close()
>>> stats = hotshot.stats.load("stones.prof")
>>> stats.strip_dirs()
>>> stats.sort_stats('time', 'calls')
>>> stats.print_stats(20)
850004 function calls in 10.090 CPU seconds
Ordered by: internal time, call count
ncalls tottime percall cumtime percall filename:lineno(function)
1 3.295 3.295 10.090 10.090 pystone.py:79(Proc0)
150000 1.315 0.000 1.315 0.000 pystone.py:203(Proc7)
50000 1.313 0.000 1.463 0.000 pystone.py:229(Func2)
.
.
.