Le point d'entrée principal pour le profileur est la fonction globale profile.run(). Elle est normalement utilisée pour créer toute information de profil. Les rapports sont mis en forme et imprimés en utilisant les méthodes de la classe pstats.Stats. Ce qui suit est une description de toutes les entrées standards et de toutes les fonctions. Pour une vue plus approfondie d'une partie de code, lire attentivement la section ultérieure sur les Extensions du Profileur, qui inclut une discussion sur comment dériver de ''meilleurs'' profileurs à partir des classes présentées, ou lire le code source de ces modules.
Cette fonction prend un seul argument qui doit ëtre passé à l'instruction exec, et un nom de fichier optionnel. Dans tous les cas cette routine va essayer d'appliquer exec à son premier argument, et réunir des statistiques de profilage à partir de l'exécution. Si aucun nom de fichier est présent, alors cette fonction imprime automatiquement un rapport simple de profilage, trié à partir de la chaîne de noms standards (fichier/ligne/nom de fonction) qui est présente dans chaque ligne . Ce qui suit est une sortie typique à partir d'un tel appel:
main()
2706 function calls (2004 primitive calls) in 4.504 CPU seconds
Ordered by: standard name
ncalls tottime percall cumtime percall filename:lineno(function)
2 0.006 0.003 0.953 0.477 pobject.py:75(save_objects)
43/3 0.533 0.012 0.749 0.250 pobject.py:99(evaluate)
...
La première ligne indique que ce profil a été générée par l'appel:
profile.run('main()'), parceque la chaîne de caractères fournie
à l'instruction exec est 'main()'. La deuxième ligne indique que 2706 appels ont été traités. Parmi ces appels, 2004 étaient primitifs. Nous définissons primitif pour signifier que l'appel n'a pas été induit au cours d'une procédure récursive. La ligne suivante : Ordered by: standard name, indique que la chaîne de caractères dans la colonne la plus à droite a été utilisée pour trier la sortie.
Les en-tëtes de colonnes comprennent:
Pour le nombre d'appels,
Pour le temps total passé dans la fonction donnée (et en excluant le temps passé en appels à des sous-fonctions),
c'est le quotienttottime divisé parncalls
c'est le temps total passé dans la fonction elle-mëme et dans toutes les sous-fonctions (c.-à-d., depuis l'invocation jusqu'à la sortie). Ce nombre est précis mëme pour les fonctions récursives.
c'est le quotient de cumtime divisé par le nombre d'appels primitifs.
fournit les données respectives de chaque fonction.
Quand il y a deux nombres dans la première colonne (voir: "43/3"), alors le dernier est le nombre d'appels primitifs et le premier est le nombre d'appels effectifs. On notera que quand la fonction ne fait pas appel à la récursion ces deux valeurs sont les mëmes et un seul nombre est imprimé.
L'analyse des données du profileur est faite à l'aide de cette classe du module pstats: