在线文档教程

hotshot

hotshot - 高性能日志分析器

2.2版本中的新功能。

该模块为_hotshotC模块提供了一个更好的接口。Hotshot是现有profile模块的替代品。由于它主要用C编写,因此它应该比现有profile模块的性能影响小得多。

注意

hotshot模块专注于在分析数据时尽量减少开销,代价是数据后处理时间较长。对于常见的用法,建议使用cProfilehotshot不会被维护,并且可能在将来从标准库中删除。

在版本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版本中的新功能。

该模块将热点分析数据加载到标准的pstatsStats对象中。

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) . . .