10.5 Manuel de Référence

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.

run(chaîne[,nomdefichier[, ..]])

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:

ncalls

Pour le nombre d'appels,

tottime

Pour le temps total passé dans la fonction donnée (et en excluant le temps passé en appels à des sous-fonctions),

percall

c'est le quotienttottime divisé parncalls

cumtime

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.

percall

c'est le quotient de cumtime divisé par le nombre d'appels primitifs.

filename:lineno(function)

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:

Stats(nomdefichier[, ...])
Ce constructeur de classe crée une instance d'un `` objet statistique'' à partir d'un nomdefichier (ou d'un ensemble de nom de fichiers). Les objets Stats sont traités par des méthodes, dans le but d'imprimer les rapports nécessaires.

Les fichiers sélectionnés par le constructeur ci-dessus doivent avoir été créés par la version correspondante du module profile profile. Pour ëtre précis il n'y a aucune compatibilité de fichier garantie avec les versions futures du profileur, et il n'y a pas de compatibilité avec des fichiers produits par d'autres profileurs (c.-à-.d., l'ancien système de profileur).

Si plusieurs fichiers sont fournis, toutes les statistiques relatives à des fonctions identiques sont fusionnées, ainsi une vue globale de plusieurs processus peut ëtre considérée dans un rapport unique. Si des fichiers additionnels doivent ëtre combinés avec les données d'un objet Stats existant, la méthode add() peut ëtre utilisée.


Sous-sections
  1. La Classe Stats