Ich versuche herauszufinden, wie ich Pythons line_profiler ausführen kann, um die zeilenweisen Ausführungszeiten im Format zu erhalten in der Antwort auf diese Frage .
Ich habe das Modul installiert und rufe sein LineProfiler
-Objekt wie folgt auf, aber die Ausgabe, die ich bekomme, ist nur ein einziges Mal und keine zeilenweise Zusammenfassung.
Irgendwelche Ideen? Wie kann ich außerdem die Zeit für die numbers = [random.randint(1,100) for i in range(1000)]
-Zeile erhalten, die außerhalb einer Funktion liegt?
Die line_profiler
Testfälle (gefunden auf GitHub ) haben eine Beispiel für das Generieren von Profildaten aus einem Python-Skript. Sie müssen die Funktion, die Sie profilieren möchten, umbrechen und dann den Wrapper aufrufen, indem Sie alle gewünschten Funktionsargumente übergeben.
Ausgabe:
%Vor%Hinzufügen zusätzlicher Funktionen zum Profil
Sie können auch zusätzliche Funktionen hinzufügen, die ebenfalls profiliert werden sollen. Wenn Sie zum Beispiel eine zweite Funktion namens haben und Sie nur die aufrufende Funktion umschließen, sehen Sie nur die Profilergebnisse von aufrufen Funktion.
%Vor%Das obige würde nur die folgende Profilausgabe für die aufrufende Funktion erzeugen:
%Vor%In diesem Fall können Sie die zusätzliche Funktion namens zu einem Profil wie diesem hinzufügen:
%Vor%Ausgabe:
%Vor% HINWEIS: Das Hinzufügen von Funktionen zum Profil auf diese Weise erfordert keine Änderungen am Profilcode (d. h., es müssen keine @profile
Decorators hinzugefügt werden).
Wie in der Dokumentation beschrieben:
In Ihrem Skript können Sie jede Funktion, die Sie profilieren möchten, mit @profile
versehen
Sie möchten Ihre do_stuff
-Funktion mit @profile
dekorieren und dann
, um die mit Anmerkungen versehene Ausgabe auf Ihr Terminal zu drucken. Das Profil wird auch in script_to_profile.py.lprof
geschrieben und Sie können die Ausgabe später mit
Tags und Links python profiling line-profiler