我正在使用hotshot来评测我的Python程序,是否有任何方法可以聚合配置文件并在Kcachegrind中查看总体结果?
经过一些研究,我使用pstats以下面给出的方式聚合配置文件,并使用pyprof2calltree
将结果转换为kcachegrind格式的
>>> pf = pstats.Stats("profile1.prof")
>>> p2 = pf.add("profile2.prof")
>>> p2.dump_stats("aggregated.prof")
pyprof2calltree
给了我这样一个错误。
File "/usr/local/bin/pyprof2calltree", line 9, in <module>
load_entry_point('pyprof2calltree==1.1.0', 'console_scripts', 'pyprof2calltree')()
File "/usr/local/lib/python2.7/dist-packages/pyprof2calltree.py", line 240, in main
kg.output(file(outfile, 'wb'))
File "/usr/local/lib/python2.7/dist-packages/pyprof2calltree.py", line 106, in output
self._entry(entry)
File "/usr/local/lib/python2.7/dist-packages/pyprof2calltree.py", line 167, in _entry
self._subentry(lineno, subentry, call_info)
File "/usr/local/lib/python2.7/dist-packages/pyprof2calltree.py", line 178, in _subentry
print >> out_file, 'calls=%d %d' % (call_info[0], co_firstlineno)
TypeError: 'int' object is not subscriptable
我在这里做错了什么吗?或者有其他方法吗?
我过去也遇到过同样的问题,最后我放弃了kcachegrind。当我最终得到结果时,它并没有我希望的那么有用。如果你只是想以图形方式显示配置文件,那么我建议你看看gprof2dot。它使用graphviz绘制结果,是迄今为止我发现的最好的工具。
你看过runsnakerrun吗?在我看来,这是python最好的探查器,您不必使用pyprof2calltree来查看结果。http://www.vrplumber.com/programming/runsnakerun/