La classe Stats¶
L’analyse des données du profileur est effectuée à l’aide de la classe Stats
.
classpstats.
Stats
(*noms de fichiers ou profil, stream=sys.stdout)¶
Ce constructeur de classe crée une instance d’un « objet statistics » à partir d’afilename (ou d’une liste de noms de fichiers) ou d’une instance Profile
. La sortie sera imprimée dans le flux spécifié par stream.
Le fichier sélectionné par le constructeur ci-dessus doit avoir été créé par la version correspondante de profile
ou cProfile
. Pour être précis, il n’y a pas de compatibilité de fichier garantie avec les futures versions de ce profileur, et il n’y a pas de compatibilité avec les fichiers produits par d’autres profileurs, ou le même profileur exécuté sur un système d’exploitation différent. Si plusieurs fichiers sont fournis, toutes les statistiques pour des fonctions identiques seront fusionnées, de sorte qu’une vue d’ensemble de plusieurs processus peut être considérée dans un seul rapport. Si des fichiers supplémentaires doivent être combinés avec des données dans un objet Stats
existant, la méthode add()
peut être utilisée.
Au lieu de lire les données de profil à partir d’un fichier, un objet cProfile.Profile
ou profile.Profile
peut être utilisé comme source de données de profil.
Stats
les objets ont les méthodes suivantes :
strip_dirs
()¶
Cette méthode pour la classe Stats
supprime toutes les informations de chemin principales des noms de fichiers. Il est très utile pour réduire la taille de l’impression pour s’adapter à (près de) 80 colonnes. Cette méthode modifie l’objet et les informations supprimées sont perdues. Après avoir effectué l’opération astrip, l’objet est considéré comme ayant ses entrées dans un ordre ”aléatoire », comme c’était le cas juste après l’initialisation et le chargement de l’objet.Si strip_dirs()
fait que deux noms de fonction sont indiscernables (ils sont sur la même ligne du même nom de fichier et ont le même nom de fonction), alors les statistiques de ces deux entrées sont accumulées en une seule entrée.
add
(*noms de fichiers)¶
Cette méthode de la classe Stats
accumule des informations de profilage supplémentaires dans l’objet de profilage actuel. Ses arguments doivent se référer aux noms de fichiers créés par la version correspondante de profile.run()
ou cProfile.run()
. Les statistiques des fonctions nommées de manière identique (re: fichier, ligne, nom) sont automatiquement accumulées dans des statistiques de fonctions uniques.
dump_stats
(nom de fichier)¶
Enregistrez les données chargées dans l’objet Stats
dans un fichier nommé filename. Le fichier est créé s’il n’existe pas et est écrasé s’il existe déjà. Ceci est équivalent à la méthode du même nom sur les classes profile.Profile
et cProfile.Profile
.
sort_stats
(*keys)¶
Cette méthode modifie l’objet Stats
en le triant selon les critères fournis. L’argument peut être une chaîne ou un SortKeyenum identifiant la base d’un tri (exemple : 'time'
'name'
SortKey.TIME
ou SortKey.NAME
). L’argument SortKey enums a un avantage sur l’argument string en ce sens qu’il est plus robuste et moins sujet aux erreurs.
Lorsque plusieurs clés sont fournies, des clés supplémentaires sont utilisées souscritères secondaires lorsqu’il y a égalité dans toutes les clés sélectionnées avant elles. Par exemple, sort_stats(SortKey.NAME, SortKey.FILE)
triera les entrées en fonction de leur nom de fonction et résoudra tous les liens (noms de fonction identiques) en les triant par nom de fichier.
Pour l’argument string, les abréviations peuvent être utilisées pour tous les noms de clés, tant que l’abréviation est sans ambiguïté.
The following are the valid string and SortKey:
Valid String Arg |
Valid enum Arg |
Meaning |
---|---|---|
|
SortKey.CALLS |
call count |
|
SortKey.CUMULATIVE |
cumulative time |
|
N/A |
cumulative time |
|
N/A |
file name |
|
SortKey.FILENAME |
file name |
|
N/A |
file name |
|
N/A |
call count |
|
SortKey.PCALLS |
primitive call count |
|
SortKey.LINE |
line number |
|
SortKey.NAME |
function name |
|
SortKey.NFL |
name/file/line |
|
SortKey.STDNAME |
standard name |
|
SortKey.TEMPS |
temps interne |
|
N/A |
temps interne |
Notez que toutes sortes de statistiques sont par ordre décroissant (en plaçant les éléments les plus chronophages en premier), où les recherches de nom, de fichier et de numéro de ligne sont par ordre croissant (alphabétique). La distinction subtile entre SortKey.NFL
et SortKey.STDNAME
est que le nom standard est comme le nom imprimé, ce qui signifie que les numéros de ligne incorporés sont comparés de manière étrange. Par exemple, les lignes 3, 20 et 40 apparaîtraient (si les noms de fichiers étaient les mêmes) dans l’ordre des chaînes 20, 3 et 40.In contrast, SortKey.NFL
effectue une comparaison numérique de la ligne numbers.In en fait, sort_stats(SortKey.NFL)
est le même que sort_stats(SortKey.NAME, SortKey.FILENAME, SortKey.LINE)
.
Pour des raisons de rétrocompatibilité, les arguments numériques -1
0
1
et 2
sont autorisés. Ils sont interprétés comme 'stdname'
'calls'
'time'
, et 'cumulative'
respectivement. Si ce format oldstyle (numérique) est utilisé, une seule clé de tri (la clé numérique) sera utilisée, et les arguments supplémentaires seront ignorés en silence.
Nouveau dans la version 3.7 : Ajout de l’énumération SortKey.
reverse_order
()¶
Cette méthode pour la classe Stats
inverse l’ordre de la liste de base dans l’objet. Notez que par défaut, l’ordre croissant vsdescending est correctement sélectionné en fonction de la clé de tri de choix.
print_stats
(*restrictions)¶
Cette méthode pour la classe Stats
affiche un rapport tel que décrit dans la définition profile.run()
.
L’ordre de l’impression est basé sur la dernière opération sort_stats()
effectuée sur l’objet (sous réserve de conserver dans add()
et strip_dirs()
).
Les arguments fournis (le cas échéant) peuvent être utilisés pour limiter la liste aux entrées significatives. Initialement, la liste est considérée comme l’ensemble completdes fonctions profilées. Chaque restriction est soit un entier (pour sélectionner un nombre de lignes), soit une fraction décimale comprise entre 0,0 et 1.0 inclus (pour sélectionner un pourcentage de lignes), ou une chaîne qui sera interprétée comme une expression générique (pour que le motif corresponde au nom standard imprimé).Si plusieurs restrictions sont fournies, elles sont appliquées séquentiellement.Par exemple :
print_stats(.1, 'foo:')
limiterait d’abord l’impression à 10% de la liste, puis uniquement les fonctions d’impression faisant partie du nom de fichier .*foo:
. En revanche, la commande:
print_stats('foo:', .1)
limiterait la liste à toutes les fonctions ayant des noms de fichiers .*foo:
, puis n’imprimerait que les 10% premiers d’entre eux.
print_callers
(*restrictions)¶
Cette méthode pour la classe Stats
affiche une liste de toutes les fonctions qui ont appelé chaque fonction dans la base de données profilée. L’ordre est identique à celui fourni par print_stats()
, et la définition de l’argument de restriction est également identique. Chaque appelant est signalé sur sa propre ligne. Le format diffère légèrement selon le profil qui a produit les statistiques:
-
Avec
profile
, un nombre est affiché entre parenthèses après chaque appel pour montrer combien de fois cet appel spécifique a été effectué. Pour plus de commodité, un deuxième nombre non entre parenthèses répète le temps cumulé passé dans la fonction à droite. -
Avec
cProfile
, chaque appelant est précédé de trois nombres: le nombre de fois que cet appel spécifique a été effectué, et le temps total et cumulatif passé dans la fonction actuelle pendant qu’elle était invoquée par cet appelant spécifique.
print_callees
(*restrictions)¶
Cette méthode pour la classe Stats
affiche une liste de toutes les fonctions appelées par la fonction indiquée. Mis à part cette inversion de la direction des appels (re:called vs a été appelé par), les arguments et la détermination sont identiques à la méthode print_callers()
.
get_stats_profile
()¶
Cette méthode renvoie une instance de StatsProfile, qui contient une correspondance des noms de fonction avec des instances de FunctionProfile. Chaque FunctionProfileinstance contient des informations liées au profil de la fonction, telles que la durée d’exécution de la fonction, le nombre de fois qu’elle a été appelée, etc.
Nouveau dans la version 3.9: Ajout des classes de données suivantes: StatsProfile, FunctionProfile.Ajout de la fonction suivante : get_stats_profile.