Zeit für python-Skripte mit IPython Magie
Wie kann ich die Zeit der Ausführung eines Python-Skript mit dem iPython %Zeit %oder % %timeit magic Befehle? Zum Beispiel habe ich script.py und ich würde gerne wissen, wie lange es dauert, um Sie auszuführen. Kleine nuance: script.py braucht input-parameter(s). Die unten scheint nicht zu funktionieren.
%%time script.py input_param1 input_param2
- Als seitliche Anmerkung, warum nicht umgestalten
script.py
so dass es kann verwendet werden, als ein Modul (so können Sie es importieren und dannscript.run(input_param1, input_param2)
tut das gleiche, als wenn die beiden Werte wurdensys.argv[1:3]
auf der Kommandozeile)? Das würde wohl helfen, für alle Arten von Tests, nicht nur die Leistung testen... - tun Sie etwas dagegen, geben ein Beispiel, wie es Aussehen würde, umgestalten script.py als Modul?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Lösung
Ihre verwenden können:
beachten Sie, dass das Skript mehrfach ausgeführt wird (die Anzahl ist adaptiv). Um ihn auszuführen, nur einmal (und haben weniger genaues timing) ändern Sie die erste Zeile zu
Erklärung
Alle Magie-Kommandos beginnend mit
%%
gelten für die gesamte Zelle. Insbesondere%%timeit
wird Zeit, alle Zeilen in der Zelle.IPython ermöglicht, Magie zu benutzen-Befehle (single
%
) in jedem Punkt des Codes (d.h. Schleifen, wenn-dann). Hier haben wir nur mithilfe der magischen Befehl%run
um das Skript auszuführen.Siehe auch: Magic Funktionen von der offiziellen IPython docs.
Können Sie auch versuchen,
cProfile
das ist ein standard, der eingebaute Python-profiler, das ist für die meisten Benutzer empfohlen.Es gibt sowohl die Gesamt-Laufzeit zusätzlich zu der gesamten Laufzeit der einzelnen Funktionen und die Anzahl der von jeder Funktion aufgerufen wurde.
Hier ist ein Beispiel, wie es zu benutzen, wenn Sie mit Ihrem script. Die Ergebnisse werden gespeichert in einer Datei namens 'output_stats':
===
Beispiel-Skript-Datei mit dem Namen primes.py: