Y a-t-il un profileur visuel pour Python? [fermé]
j'utilise cProfile maintenant, mais je trouve ça fastidieux à écrire pstats code pour interroger les données de la statistique.
je suis à la recherche d'un outil visuel qui me montre ce que mon code Python fait en termes de temps CPU et d'allocation de mémoire.
quelques exemples du monde Java sont visualvm et JProfiler .
- est-ce que quelque chose comme ça existe?
- y a-t-il un IDE qui fait ça?
- Serait dtrace de l'aide?
je sais À propos de KCachegrind Pour Linux, mais je préférerais quelque chose que je peux exécuter sur Windows/Mac sans installer KDE.
12 réponses
un ami et moi avons écrit un visualiseur de profil Python appelé SnakeViz qui fonctionne dans un navigateur web. Si vous utilisez déjà avec succès RunSnakeRun SnakeViz peut ne pas ajouter beaucoup de valeur, mais SnakeViz est beaucoup plus facile à installer.
Edit: SnakeViz supporte Python 2 et 3 et fonctionne sur tous les principaux systèmes.
je suis seulement au courant de RunSnakeRun .
il y a aussi eu quelques discussions il y a quelque temps à propos d'un profileur intégré dans PyDev (Eclipse), mais je ne sais pas si cela verra un jour le jour.
mise à jour: malheureusement, il semble que RunSnakeRun n'est plus maintenu, et Qu'il ne supporte pas Python 3.
j'utilise gprof2dot.py. Le résultat ressemble à comme ceci . J'utilise ces commandes:
python -m cProfile -o profile.dat my_program.py
gprof2dot.py -f pstats profile.dat | dot -Tpng -o profile.png
Vous avez besoin de graphviz et gprof2dot.py installé. Vous pourriez aimer un script shell de commodité .
Python Tools for Visual Studio contient un profileur graphique très bien fait: http://www.youtube.com/watch?v=VCx7rlPyEzE&hd=1
KCacheGrind comprend une version appelée QCacheGrind qui fonctionne sur Mac OS X et à la Windows .
Python Call Graph génère des pics très similaires à ceux de . Il montre également le temps total pour chaque fonction, pour une raison quelconque, il n'est pas reflété dans les graphiques d'exemple.
essayez Snakeviz. Très facile à installer (via pip) et il est basé sur le navigateur.
j'ai écrit un outil de visualisation basé sur un navigateur, profile_eye , qui fonctionne sur la sortie de gprof2dot .
gprof2dot est excellent pour grokking de nombreuses sorties d'outil de profilage, et fait un excellent travail au placement d'éléments de graphisme. Le rendu final est statique graphique, qui est souvent très encombré.
utilisant d3.js il est possible d'enlever beaucoup de ce désordre, par décoloration relative des éléments non focalisés, du bout des outils, et un Fisheye distortion .
à titre De comparaison, voir profile_eye de visualisation du de la canonique exemple utilisé par gprof2dot . Pour Python en particulier, voir un exemple de sortie cProfile .
Consider pyflame + flamegraph
Pyflame: a Ptracing Profiler For Python + flamegraph
https://github.com/uber/pyflame
vous pouvez tracer vers un processus Python en cours d'exécution en utilisant pyflame.