Профилировщики графов вызовов в Python - PullRequest
5 голосов
/ 03 ноября 2010

В моей программе на Python я использовал много модулей и пытаюсь подсчитать количество вызываемых функций и задействованных цепочек вызовов. Есть ли в Python инструмент / модуль, который предоставит мне эту статистику.

Ответы [ 3 ]

6 голосов
/ 03 ноября 2010

Я использовал это.Это не сработало для моих целей, так как в моем приложении одновременно запущено много потоков, и я получил 12000 ссылок, а graphviz не смог скомпилировать его.Но это сработало, когда я запустил его в одном потоке.

http://pycallgraph.slowchop.com/

3 голосов
/ 03 ноября 2010
Профиль

pydoc -k

предоставит вам список того, что находится в вашей системе.Я использовал профиль и cProfile.

Это так же просто, как:


if __name__ == '__main__':
 if PROFILING:
  import cProfile
  cProfile.run("main()")
 else:
  main()
1 голос
/ 21 сентября 2016

Шесть лет спустя у меня тот же вопрос, некоторые люди рекомендуют использовать KCachegrind для визуализации цепочек вызовов. Хотя это допустимый вариант для пользователей Linux, его крайне сложно установить на Mac OSX и, вероятно, также на Windows.

Наконец, я использую gprof2dot . С помощью всего нескольких команд вы получите свой выразительный график вызовов:

python -m cProfile -o output.pstats path/to/your/script arg1 arg2
gprof2dot.py -f pstats output.pstats | dot -Tpng -o output.png

Простой инструмент, быстрый результат: зацените: https://github.com/jrfonseca/gprof2dot

Изменить:

Теперь я узнал, что вы можете получить KCachegrind также с помощью варева: brew install qcachekrind

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...