Journal Profiler du code python avec pyprof2calltree

Posté par  (site web personnel) .
Étiquettes :
5
17
nov.
2008
pyprof2calltree est utilitaire pour visualiser un résultat de profiler python avec kcachegrind. En fait c'est une amélioration du script lsprofcalltree.py de David Allouche pour ajouter le support de pstats en entrée et le rendre plus facilement utilisable programmatiquement depuis un shell python.

http://pypi.python.org/pypi/pyprof2calltree/

Le principe général c'est d'utiliser le module cProfile de python 2.5+ pour enregistrer le temps passé dans chaque fonction lors d'un exécution d'un programme python ainsi que des infos sur quelle fonction appelle quelle autre fonction. pyprof2calltree permet ensuite de formater ces données pour les visualiser en parcourant un arbre d'appel annoté dans le logiciel kcachegrind. Ca donne des résultats du type : http://images.google.fr/images?q=kcachegrind

Exemple de session dans ipython (shell interfactif avancé) :


In [1]: %doctest_mode
Exception reporting mode: Plain
Doctest mode is: ON

>>> from xml.etree import ElementTree
>>> xml_content = '\n' + '\ttext\n' * 100 + ''
>>> %prun -D out.stats ElementTree.fromstring(xml_content)

*** Profile stats marshalled to file 'out.stats'

>>> from pyprof2calltree import convert, visualize
>>> visualize('out.stats')
>>> convert('out.stats', 'out.kgrind')

>>> results = %prun -r ElementTree.fromstring(xml_content)
>>> visualize(results)


Pour installer tout ca sous debian / ubuntu :

$ sudo aptitude install kcachegrind python-setuptools
$ sudo easy_install -U pyprof2calltree
$ sudo easy_install -U ipython # la derniere version de ipython utilise cProfile

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.