Cette section s'adresse aux utilisateurs qui ``n'ont pas envie de lire le manuel ''. Elle fournit un trés bref apercu, et permet à un utilisateur de rapidement réaliser le profilage d'une application existante.
Pour profiler une application avec comme point d'entrée "foo()", vous devrez ajouter ce qui suit à votre module:
import profile
profile.run('foo()')
L'action ci-dessus entraînera l'exécution de "foo()" , et l'impression d'une série de lignes d'information (le profil). L'approche ci-dessus est trés utile quand on travaille avec l'interpréteurPython. Si vous souhaitez garder le résultat d'un profil dans un fichier pour l'examiner plus tard, vous pourrez fournir un nom de fichier comme second argument de la fonction run():
import profile
profile.run('foo()', 'fooprof')
Le fichier profile.py peut ëtre aussi appelé comme script pour profiler un autre script. Par exemple:
python /usr/local/lib/python1.5/profile.py myscript.py
Quand vous souhaiterez examiner le profil, vous devrez utiliser les méthodes du module pstats. Typiquement vous chargerez les données statistiques comme suit:
import pstats
p = pstats.Stats('fooprof')
La classe Stats (Le code ci-dessus crée justement une instance de cette classe) est munie de différentes méthodes pour manipuler et imprimer les données qui sont lues précisément dans "p". Quand vous avez exécuté l'instruction ci-dessus profile.run(), ce qui a été imprimé est le résultat de trois appels à methode:
p.strip_dirs().sort_stats(-1).print_stats()
La première méthode a retiré les information de chemins inutiles dans toutes les en-tëtes de noms de module. La deuxième méthode a trié toutes les données suivant la chaîne de tri standard module/ligne/nom (module/line/name) qui est imprimée (Ceci pour ëtre compatible avec la sémantique de l'ancien profileur). La troisième méthode imprime toutes les statistiques. Vous pourriez essayer les appels de tri suivants:
p.sort_stats('name')
p.print_stats()
Le premier appel triera réellement la liste par nom de fonction, et le second appel imprimera les statistiques. En suivant, quelques appels intéressants à expérimenter:
p.sort_stats('cumulative').print_stats(10)
Ceci trie le profil par temps cumulés dans une fonction, et ensuite imprime seulement les dix lignes les plus significatives. Si vous voulez savoir quels sont les algorithmes qui consomment le plus de temps vous n'aurez qu'à utiliser les lignes ci-dessus.
Si vous recherchiez quelle fonction bouclait trop, et prennait trop de temps, vous feriez:
p.sort_stats('time').print_stats(10)
pour trier selon le temps passé dans chaque fonction et ensuite imprimer les statistiques pour les dix premières fonctions.
Vous pourriez aussi essayer:
p.sort_stats('file').print_stats('__init__')
Ceci trie les statistiques suivant le nom de fichier, et ensuite imprime les statistiques pour seulement les méthodes de classe init (parcequ'elles s'écrivent "__init__" dans toutes les classes). Comme exemple final vous pourriez essayer:
p.sort_stats('time', 'cum').print_stats(.5, 'init')
Cette ligne trie les statistiques avec une clé primaire sur le temps ('time'), et une clé secondaire sur le temps cumulé ('cum'), et ensuite imprime différentes statistiques. Pour ëtre précis la liste est premièrement condensée à 50% de sa taille originale (voir: ".5"), et ensuite seules les lignes contenant init sont gardées et une sous-sous liste est imprimée.
Si vous vous ëtes demandé quelles sont les fonctions qui ont appelé les fonctions ci-dessus,("p" étant toujours trié suivant le dernier critère) vous pouvez maintenant faire :
p.print_callers(.5, 'init')
et vous obtiendrez la liste des appelants de chaque fonctions listées.
Si vous voulez plus de fonctionnalités, vous devez vous mettre à lire le manuel ou deviner ce que font les fonctions suivantes :
p.print_callees()
p.add('fooprof')