Dans mon programme python, j'ai utilisé beaucoup de modules et j'essaie d'avoir un compte des fonctions appelées et des chaînes d'appel impliquées. Y a-t-il un outil/module en python qui me fournira ces statistiques.Profileurs de graphes d'appel en Python
Répondre
Je l'ai utilisé cela. Cela n'a pas fonctionné pour mon but puisque mon application a plusieurs threads fonctionnant immédiatement et que j'ai fini avec 12000 liens et que graphviz n'a pas pu le compiler. Mais cela a fonctionné quand je l'ai couru sur un seul fil.
pydoc profil -k
vous donnera une liste de ce qui est sur votre système. J'ai utilisé profile et cProfile.
Il est aussi simple que:
if __name__ == '__main__':
if PROFILING:
import cProfile
cProfile.run("main()")
else:
main()
je diid essayer plus tôt .. et j'obtiens l'erreur, c'est pourquoi je cherchais un outil/module qui le rendra plus facile pour moi – Rahul
Quel est le texte exact de votre erreur? –
Traceback (dernier appel en dernier): Fichier "test.py", ligne 12, en
Six ans plus tard, j'ai la même question, certains people recommend à utiliser KCachegrind pour visualiser les chaînes d'appel. Bien qu'il s'agisse d'une option valide pour les utilisateurs de Linux, il est extrêmement difficile à installer sur Mac OSX et probablement aussi sur Windows.
Enfin, j'utilise gprof2dot à la place. Avec quelques commandes que vous aurez votre graphe d'appel expressif:
python -m cProfile -o output.pstats path/to/your/script arg1 arg2
gprof2dot.py -f pstats output.pstats | dot -Tpng -o output.png
outil facile, des résultats rapides: vérifier: https://github.com/jrfonseca/gprof2dot
Edit:
Maintenant, je découvert que vous pouvez obtenir KCachegrind aussi via le brassage: brew install qcachekrind
Demandez-vous vraiment "Comment puis-je trouver les goulots d'étranglement dans mon code python afin que je puisse le faire fonctionner f aster"? –
bien à certains niveaux oui. C'est juste que si la chaîne d'appel des fonctions pour un événement particulier est assez longue, alors je préférerais substituer avec une méthode alternative efficace si je peux. – Rahul