2012-03-09 37 views
4

我正在使用hotshot來剖析我的Python程序, 有什麼方法可以聚合配置文件並在Kcachegrind中查看總結果?如何聚合hotshot(profiler)結果並在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 

上午我在這裏做得不對或有任何其他方式做到這一點?

回答

0

我過去也遇到同樣的問題,最後我放棄了kcachegrind。當我最終得到結果時,它沒有我希望的那麼有用。如果你只想以圖形方式顯示配置文件,那麼我建議你看看gprof2dot。它使用graphviz來繪製結果,並且迄今爲止它是我發現的最好的工具。

+0

感謝和點似乎不是一個很好的解決方案。 – Eby 2012-03-09 07:14:10