Ich habe versucht, mit dem line_profiler-Modul ein zeilenweises Profil über eine Python-Datei zu erhalten. Das habe ich bisher gemacht:
1) Installierter line_profiler von pypi mit der .exe Datei (ich bin auf WinXP und Win7). Klicken Sie einfach durch den Installationsassistenten.
2) Ein kleines Stück Code geschrieben (ähnlich dem, was in einer anderen beantworteten Frage gestellt wurde) hier ).
%Vor%3) Führen Sie den Code von IDLE / PyScripter aus. Ich habe nur die Zeit.
%Vor%Wie bekomme ich ein vollständiges zeilenweises Profil über den Code, den ich ausführe? Ich habe noch nie fortgeschrittene Python-Funktionen wie Dekoratoren verwendet, daher ist es für mich schwierig zu verstehen, wie ich die Richtlinien verwenden soll, die von verschiedenen Beiträgen wie hier und hier .
Folgen Sie einfach dem Beispiel von Dan Riti vom ersten Link , aber verwenden Sie Ihren Code. Alles, was Sie nach der Installation des line_profiler
-Moduls tun müssen, ist, fügen Sie einen @profile
Decorator direkt vor jeder Funktion, die Sie zeilenweise profilieren möchten, hinzu und stellen Sie sicher, dass jeder mindestens einmal irgendwo anders im Code aufgerufen wird - also für Ihr trivialer Beispielcode, der ungefähr so aussehen würde:
example.py
datei:
Nachdem Sie das getan haben, führen Sie Ihr Skript über das kernprof.py
✶ aus, das in Ihrem C:\Python27\Scripts
-Verzeichnis installiert wurde. Hier ist die (nicht sehr interessante) tatsächliche Ausgabe davon in einer Windows 7-Befehlszeilensitzung:
Wahrscheinlich müssen Sie diesen letzten Schritt anpassen - das Ausführen Ihres Testskripts mit kernprof.py
anstatt direkt mit dem Python-Interpreter -, um das Äquivalent von IDLE oder PyScripter aus auszuführen.
✶ Aktualisieren
Es sieht so aus, dass in line_profiler
v1.0 das Dienstprogramm kernprof
als ausführbare Datei und nicht als .py
-Datei verteilt ist, so wie ich es bei der obigen Beschreibung getan habe. Dies bedeutet, dass Folgendes verwendet werden muss, um es über die Befehlszeile aufzurufen:
Diese Antwort ist eine Kopie meiner Antwort hier , um line_profiler
statistics aus einem Python-Skript zu erhalten ( ohne kernprof
von der Befehlszeile zu verwenden oder @profile
decorators zu Funktionen und Klassenmethoden hinzuzufügen). Alle Antworten (die ich gesehen habe) zu ähnlichen line_profiler
-Fragen beschreiben nur die Verwendung von kernprof
.
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 profilierten Code (d. h., es müssen keine @profile
Decorators hinzugefügt werden).
Tags und Links python profiling python-2.7 line-profiler