Как агрегировать результаты поиска (профилировщик) и просматривать их в kcachegrind - PullRequest
4 голосов
/ 09 марта 2012

Я использую 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 голосов
/ 27 ноября 2013

Вы смотрели на runnakerun? На мой взгляд, это лучший профилировщик для python, и вам не нужно использовать pyprof2calltree для просмотра результатов. http://www.vrplumber.com/programming/runsnakerun/

0 голосов
/ 09 марта 2012

В прошлом у меня была такая же проблема, и в конце концов я отказался от kcachegrind. Когда я наконец получил результат, он оказался менее полезным, чем я надеялся. Если вы просто хотите отобразить профиль графически, я бы порекомендовал вам взглянуть на gprof2dot . Он использует graphviz для рисования результатов и пока что это лучший инструмент, который я нашел для этого.

...