Die Python-Profiler¶

Die Stats-Klasse¶

Die Analyse der Profiler-Daten erfolgt mit der Stats -Klasse.

classpstats.Stats(*Dateinamen oder Profil, stream=sys.stdout)¶

Dieser Klassenkonstruktor erstellt eine Instanz eines „Statistikobjekts“ aus einem Dateinamen (oder einer Liste von Dateinamen) oder aus einer Profile Instanz. Outputwird in den von stream angegebenen Stream gedruckt.

Die vom obigen Konstruktor ausgewählte Datei muss von der entsprechenden Version von profile oder cProfile erstellt worden sein. Um genau zu sein, gibt es keine garantierte Dateikompatibilität mit zukünftigen Versionen von thisprofiler, und es gibt keine Kompatibilität mit Dateien, die von otherprofilers oder demselben Profiler erstellt wurden, der auf einem anderen Betriebssystem ausgeführt wird. Wenn mehrere Dateien bereitgestellt werden, werden alle Statistiken für identische Funktionen zusammengeführt, so dass eine Gesamtansicht mehrerer Prozesse in einem einzigen Bericht berücksichtigt werden kann. Wenn zusätzliche Dateien mit Daten in einem vorhandenen Stats -Objekt kombiniert werden müssen, kann die add() -Methode verwendet werden.

Anstatt die Profildaten aus einer Datei zu lesen, kann ein cProfile.Profileoder profile.Profile Objekt als Profildatenquelle verwendet werden.

Stats Objekte haben die folgenden Methoden:

strip_dirs()¶

Diese Methode für die Stats Klasse entfernt alle führenden Pfadinformationen aus Dateinamen. Dies ist sehr nützlich, um die Größe des Ausdrucks auf (fast) 80 Spalten zu reduzieren. Diese Methode modifiziertdas Objekt und die bereinigten Informationen gehen verloren. Nach dem Ausführen einer Stripoperation wird davon ausgegangen, dass das Objekt seine Einträge in einer“zufälligen“ Reihenfolge hat, wie dies unmittelbar nach der Objektinitialisierung und dem Laden der Fall war.Wenn strip_dirs() bewirkt, dass zwei Funktionsnamen nicht unterscheidbar sind (sie befinden sich in derselben Zeile desselben Dateinamens und haben denselben Funktionsnamen), werden die Statistiken für diese beiden Einträge in einem einzigen Eintrag zusammengefasst.

add(*filenames)¶

Diese Methode der Stats-Klasse sammelt zusätzliche Profilinginformationen in das aktuelle Profiling-Objekt. Seine Argumente sollten sich auf Dateinamen beziehen, die von der entsprechenden Version von profile.run()oder cProfile.run()erstellt wurden. Statistiken für identisch benannte (re: Datei, Zeile, Name) Funktionen werden automatisch in einzelne functionstatistics akkumuliert.

dump_stats(filename)¶

Speichern Sie die in das Stats-Objekt geladenen Daten in einer Datei namensfilename. Die Datei wird erstellt, wenn sie nicht existiert, und wird überschriebenwenn es bereits existiert. Dies entspricht der gleichnamigen Methodeauf den Klassen profile.Profile und cProfile.Profile.

sort_stats(*keys)¶

Diese Methode ändert das Stats Objekt, indem es nach den angegebenen Kriterien sortiert wird. Das Argument kann entweder eine Zeichenfolge oder eine SortKeyenum sein, die die Basis einer Sortierung identifiziert (Beispiel: 'time''name'SortKey.TIME oder SortKey.NAME). Das Argument SortKey enums hat gegenüber dem Argument string den Vorteil, dass es robuster und weniger fehleranfällig ist.

Wenn mehr als ein Schlüssel angegeben ist, werden zusätzliche Schlüssel als verwendetsekundäre Kriterien, wenn alle zuvor ausgewählten Schlüssel gleich sind. Beispiel: sort_stats(SortKey.NAME, SortKey.FILE) sortiert alle Einträge nach ihrem Funktionsnamen und löst alle Verknüpfungen (identische Funktionsnamen) auf, indem nach Dateinamen sortiert wird.

Für das String-Argument können Abkürzungen für beliebige Schlüsselnamen verwendet werden, solange die Abkürzung eindeutig ist.

The following are the valid string and SortKey:

Valid String Arg

Valid enum Arg

Meaning

'calls'

SortKey.CALLS

call count

'cumulative'

SortKey.CUMULATIVE

cumulative time

'cumtime'

N/A

cumulative time

'file'

N/A

file name

'filename'

SortKey.FILENAME

file name

'module'

N/A

file name

'ncalls'

N/A

call count

'pcalls'

SortKey.PCALLS

primitive call count

'line'

SortKey.LINE

line number

'name'

SortKey.NAME

function name

'nfl'

SortKey.NFL

name/file/line

'stdname'

SortKey.STDNAME

standard name

'time'

SortKey.ZEIT

interne Zeit

'tottime'

N/A

interne Zeit

Beachten Sie, dass alle Arten von Statistiken in absteigender Reihenfolge sind (wobei die meisten zeitaufwendigen Elemente an erster Stelle stehen), wobei die Suche nach Namen, Dateien und Zeilennummern in aufsteigender Reihenfolge (alphabetisch) erfolgt. Der feine Unterschied zwischenSortKey.NFL und SortKey.STDNAME besteht darin, dass der Standardname asort des gedruckten Namens ist, was bedeutet, dass die eingebetteten Zeilennummern auf seltsame Weise verglichen werden. Beispielsweise würden die Zeilen 3, 20 und 40 (wenn die Dateinamen identisch wären) in der Zeichenfolgenreihenfolge 20, 3 und 40.In im Gegensatz dazu SortKey.NFL führt einen numerischen Vergleich der Zeile durch numbers.In tatsache, sort_stats(SortKey.NFL) ist das gleiche wiesort_stats(SortKey.NAME, SortKey.FILENAME, SortKey.LINE).

Aus Gründen der Abwärtskompatibilität sind die numerischen Argumente -101 und 2 zulässig. Sie werden als 'stdname''calls''time' und 'cumulative' interpretiert. Wenn dieses Oldstyle-Format (numerisch) verwendet wird, wird nur ein Sortierschlüssel (der numerische Schlüssel) verwendet, und zusätzliche Argumente werden stillschweigend ignoriert.

Neu in Version 3.7: SortKey Enum hinzugefügt.

reverse_order()¶

Diese Methode für die Stats Klasse kehrt die Reihenfolge der Basisliste innerhalb des Objekts um. Beachten Sie, dass die aufsteigende vsdescending-Reihenfolge standardmäßig basierend auf dem ausgewählten Sortierschlüssel richtig ausgewählt ist.

print_stats(*restrictions)¶

Diese Methode für die Stats Klasse gibt einen Bericht aus, wie in der profile.run() Definition beschrieben.

Die Reihenfolge des Druckens basiert auf der letztensort_stats() Operation, die am Objekt ausgeführt wurde (vorbehaltlich der caveats in add() undstrip_dirs()).

Die angegebenen Argumente (falls vorhanden) können verwendet werden, um die Liste auf die wesentlichen Einträge zu beschränken. Zunächst wird die Liste als vollständiger Satz angesehenprofilierte Funktionen. Jede Einschränkung ist entweder eine ganze Zahl (um die Anzahl der Zeilen auszuwählen) oder ein Dezimalbruch zwischen 0,0 und 1.0 inklusive (um einen Prozentsatz der Zeilen auszuwählen) oder eine Zeichenfolge, die als a interpretiert wirdregelmäßiger Ausdruck (um Muster entsprechen dem Standardnamen, der gedruckt wird).Wenn mehrere Einschränkungen vorgesehen sind, werden sie nacheinander angewendet.Zum Beispiel:

print_stats(.1, 'foo:')

würde zuerst den Druck auf die ersten 10% der Liste beschränken und dann nur printfunctions , die Teil von filename .*foo: . Im Gegensatz dazu, thecommand:

print_stats('foo:', .1)

würde die Liste auf alle Funktionen mit Dateinamen .*foo:beschränken und dann nur die ersten 10% davon drucken.

print_callers(*restrictions)¶

Diese Methode für die Stats Klasse gibt eine Liste aller Funktionen aus, die jede Funktion in der profilierten Datenbank aufgerufen haben. Die Reihenfolge ist identisch mit der von print_stats() , und die Definition des einschränkenden Arguments ist ebenfalls identisch. Jeder Anrufer wird in einer eigenen Leitung gemeldet. Das Format unterscheidet sich geringfügig je nach dem Profil, der die Statistiken erstellt hat:

  • Mit profilewird nach jedem Anrufer eine Zahl in Klammern angezeigtum anzuzeigen, wie oft dieser bestimmte Anruf getätigt wurde. Der Einfachheit halber wiederholt asecond non-parenthesized number die kumulative Zeit, die in der Funktion auf der rechten Seite verbracht wird.

  • Mit cProfilewerden jedem Aufrufer drei Nummern vorangestellt: die Anzahl der Male, die dieser spezifische Aufruf getätigt wurde, und die Gesamt- und Kumulationszeiten, die in der aktuellen Funktion verbracht wurden, während sie von diesem spezifischen Aufrufer aufgerufen wurde.

print_callees(*restrictions)¶

Diese Methode für die Stats Klasse gibt eine Liste aller Funktionen aus, die von der angegebenen Funktion aufgerufen wurden. Abgesehen von dieser Umkehrung der Anrufrichtung (re: called vs was called by ) sind die Argumente und die Reihenfolge identisch mit der print_callers() Methode.

get_stats_profile()¶

Diese Methode gibt eine Instanz von StatsProfile zurück, die eine Zuordnung von Funktionsnamen zu Instanzen von FunctionProfile enthält. Jede FunctionProfileinstance enthält Informationen zum Funktionsprofil, z. B. wie lange die Ausführung der Funktion gedauert hat, wie oft sie aufgerufen wurde usw.

Neu in Version 3.9: Die folgenden Datenklassen wurden hinzugefügt: StatsProfile, FunctionProfile.Die folgende Funktion wurde hinzugefügt: get_stats_profile.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.