如何聚合hotshot(探查器)结果并在kcachegrind中查看它

时间:2012-03-09 06:42:43

标签: python profiler kcachegrind

我正在使用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

我在这里做错了什么或有其他方法可以做到这一点吗?

2 个答案:

答案 0 :(得分:0)

我过去遇到过同样的问题,最后我放弃了kcachegrind。当我最终得到它时,它没有我希望的那么有用。如果您只是想以图形方式显示个人资料,那么我建议您查看gprof2dot。它使用graphviz绘制结果,到目前为止它是我发现的最好的工具。

答案 1 :(得分:0)

你看过runsnakerun吗?在我看来,它是python最好的分析器,你不必使用pyprof2calltree来查看结果。 http://www.vrplumber.com/programming/runsnakerun/