4

ホットショットを使用して 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

ここで何か間違ったことをしていますか、これを行う他の方法はありますか?

4

2 に答える 2

0

私は過去に同じ問題を抱えていましたが、最終的には kcachegrind をあきらめました。最終的に結果を取得したとき、期待していたよりも役に立ちませんでした。プロファイルをグラフィカルに表示したいだけなら、gprof2dotをご覧になることをお勧めします。これはグラフビズを使用して結果を描画します。これまでのところ、これを行うのに最適なツールです。

于 2012-03-09T06:49:07.233 に答える
0

あなたはrunsnakerunを見たことがありますか?私の意見では、これは Python に最適なプロファイラーであり、結果を表示するために pyprof2calltree を使用する必要はありません。http://www.vrplumber.com/programming/runsnakerun/

于 2013-11-27T04:45:38.833 に答える