« Back
in Python Debugger read.

Profiler en Python.

J'ai eu besoin rapidement de profiler mon code python en raison d'une grande latence.

Voici simplement la ligne de commande nécessaire :

python -m cProfile -s 'time' monscript.py > output.log

L'option -s 'time' permet le tri par temps d’exécution.
Il y a d'autres options disponibles :

  • 'calls' par nombre d'appel
  • 'cumulative' par temps cumulatifs
  • 'file' par fichier
  • 'module' par nom de module
  • 'pcalls' primitive call count
  • 'line' par numéro de ligne
  • 'name' par nom de fonction
  • 'nfl' par nom, fichier, puis ligne
  • 'stdname' par nom "standardisé"
  • 'time' par temps d’exécution Le résultat s'affiche sous la forme suivante :

    386642 function calls (382170 primitive calls) in 4.961 CPU seconds

    Ordered by: internal time

    ncalls tottime percall cumtime percall filename:lineno(function) 37 3.146 0.085 3.146 0.085 {method 'query' of '_mysql.connection' objects} etc ...

Le > output.log permet de cracher la sortie normale dans un fichier output.log

Sinon je suis tombé sur ce script qui permet de faire un débug par ligne. Je n'en ai pas eu besoin mais cela peut être intéressant :

Profiler python par ligne (cliquer ici)http://packages.python.org/line_profiler/

comments powered by Disqus