Zeit in Python messen?
Was ich will, ist, starten Sie die Zählung der Zeit irgendwo in meinem code und dann die vergangene Zeit, die Zeit Messen, die es brauchte, um auszuführen, paar-Funktion. Ich denke, ich bin mit dem timeit-Modul falsch, aber die docs sind einfach nur verwirrend für mich.
import timeit
start = timeit.timeit()
print "hello"
end = timeit.timeit()
print end - start
InformationsquelleAutor der Frage gilbert8 | 2011-09-10
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn Sie nur wollen, um zu Messen die verstrichene wall-clock-Zeit zwischen zwei Punkten, die Sie nutzen könnten
Zeit.time()
:Dieser gibt die Ausführungszeit in Sekunden.
Andere option, da die 3.3 ist die Verwendung von
perf_counter
oderprocess_time
je nach Ihren Anforderungen. Vor 3.3 es wurde empfohlen, zu verwendenZeit.Uhr
(Dank Bernstein). Allerdings ist gegenwärtig veraltet:InformationsquelleAutor der Antwort NPE
Verwenden
timeit.default_timer
statttimeit.timeit
. Erstere bietet die besten Uhr zur Verfügung auf Ihrer Plattform und der version von Python automatisch:timeit.default_timer zugewiesen ist Zeit.Zeit() oder time.Uhr() je nach OS. Auf Python 3.3+ default_timer ist Zeit.perf_counter() auf allen Plattformen. Sehen Python - Zeit.Uhr() vs. Zeit.time() - Genauigkeit?
Siehe auch:
InformationsquelleAutor der Antwort jfs
Python 3 nur:
Seit Zeit.Uhr() ist veraltet, wie von Python 3.3die Sie verwenden möchten, werden
Zeit.perf_counter()
für system-wide timing, oderZeit.process_time()
für Prozess-breit-timing, gerade die Weise, die Sie verwendet, um zu verwendentime.clock()
:Die neue Funktion
process_time
umfasst nicht die verstrichene Zeit während des Schlafes.InformationsquelleAutor der Antwort Pierre Prinetti
Gegeben eine Funktion, die Sie möchten, um Zeit,
test.py:
der einfachste Weg, um
timeit
ist der Aufruf von der Befehlszeile aus:Versuchen Sie nicht, um
time.time
odertime.clock
(naiv) zu vergleichen, die Geschwindigkeit der Funktionen. Sie können zu irreführenden Ergebnissen führen.PS. Setzen Sie nicht die print-Anweisung in einer Funktion, die Sie möchten, zu Zeit; ansonsten wird die Zeit gemessen wird, hängt von der die Geschwindigkeit der Klemme.
InformationsquelleAutor der Antwort unutbu
Ich diese bevorzugen.
timeit
doc ist viel zu verwirrend.Beachten Sie, dass nicht jede Formatierung Los hier, ich schrieb
hh:mm:ss
in die printout-so kann man interpretierentime_elapsed
InformationsquelleAutor der Antwort user1761806
Macht es Spaß, dies zu tun mit einem context-manager, der automatisch merkt sich die Startzeit bei der Einreise zu einem
with
block, dann friert das Ende der Zeit auf den block verlassen. Mit ein wenig Trickserei, kann man sogar eine laufende verstrichene-Zeit-Zählers in den block, aus dem gleichen Kontext-manager-Funktion.Die core-Bibliothek hat dies nicht (aber wahrscheinlich sollte). Einmal im Ort, können Sie Sachen wie tun:
Hier contextmanager code ausreichend, um den trick zu tun:
Und einige lauffähigen demo-code:
Beachten Sie, dass durch die Gestaltung von dieser Funktion, wird der Rückgabewert von
elapsed()
ist eingefroren auf block beenden, und fordert zudem die Rückgabe die gleiche Dauer (etwa 6 Sekunden in diesem Beispiel Spielzeug).InformationsquelleAutor der Antwort gojomo
Mit
time.time
zu Messen Ausführung gibt Ihnen die Gesamt-Ausführungszeit der Befehle darunter ausgeführt werden-Zeit, die andere Prozesse auf Ihrem computer. Es ist die Zeit, die der Benutzer merkt, aber ist nicht gut, wenn Sie wollen, vergleichen Sie verschiedene code-snippets /algorithmen /Funktionen /...Mehr Informationen auf
timeit
:Wenn Sie möchten, einen tieferen Einblick in die Profilerstellung:
Update: ich http://pythonhosted.org/line_profiler/ einer Menge im Laufe des letzten Jahres und finde es sehr hilfreich und empfehlen es zu benutzen anstelle von Pythons Profil-Modul.
InformationsquelleAutor der Antwort rocksportrocker
Hier ein kleines timer-Klasse zurückgibt, "hh:mm:ss" string:
Verwendung:
InformationsquelleAutor der Antwort Danijel
Python cProfile und pstats-Module bieten große Unterstützung für die Messung verstrichene Zeit in bestimmte Funktionen, ohne dass Sie jeglichen code, um die vorhandenen Funktionen.
Wenn Sie beispielsweise ein python-Skript timeFunctions.py:
Ausführen und generieren von profiler-Statistiken für die Datei, führen Sie einfach:
Was dieser tut, ist mit dem Modul cProfile zu Profil, alle Funktionen in timeFunctions.py und für die Erhebung der Statistiken in den timeStats.Profil-Datei. Beachten Sie, dass wir nicht haben, fügen Sie code für vorhandenen Modul (timeFunctions.py) und dies kann mit einem beliebigen Modul.
Sobald Sie die stats-Datei, die Sie ausführen können, um die pstats-Modul wie folgt:
Dieser betreibt das interaktive Statistik-browser, mit dem du eine Menge netter Funktionen. Für Ihren Anwendungsfall können Sie einfach überprüfen Sie die Statistiken für Ihre Funktion. In unserem Beispiel ist das prüfen von Statistiken für beide Funktionen ist, zeigt uns Folgendes:
Den dummy-Beispiel nicht viel tun, aber geben Sie Ihnen eine Idee von, was getan werden kann. Das beste an diesem Ansatz ist, dass ich nicht zu Bearbeiten von meinen vorhandenen code ein, um diese zahlen und natürlich helfen mit profiling.
InformationsquelleAutor der Antwort sanchitarora
(Mit Ipython) Sie können %timeit zur Ermittlung der durchschnittlichen Bearbeitungszeit:
dann:
das Ergebnis ist so etwas wie:
InformationsquelleAutor der Antwort Eyal Ch
Hier ist noch ein Kontext-manager für timing-code -
Verwendung:
oder, wenn Sie brauchen Sie die Zeit Wert
benchmark.py:
Angepasst http://dabeaz.blogspot.fr/2010/02/context-manager-for-timing-benchmarks.html
InformationsquelleAutor der Antwort Brian Burns
Verwenden profiler-Modul. Es gibt ein sehr detailliertes Profil.
gibt es so etwas wie:
Ich fand es sehr informativ.
InformationsquelleAutor der Antwort Leonid Ganeline
Art von super-später Antwort, aber vielleicht dient es einem Zweck für jemanden. Dies ist ein Weg, es zu tun, die ich denke, ist super sauber.
Beachten Sie, dass "print" ist eine Funktion in Python 3 und nicht Python 2.7. Jedoch funktioniert es mit jeder anderen Funktion. Prost!
InformationsquelleAutor der Antwort Andreas Herman
auf Python ist3:
elegant und kurz.
InformationsquelleAutor der Antwort DmitrySemenov
Wir können auch konvertieren Sie die Zeit in lesbare Zeit.
InformationsquelleAutor der Antwort Kamlesh Verma
Machte ich eine Bibliothek dafür, wenn Sie Messen möchten eine Funktion, die Sie können, tun es einfach so
https://github.com/Karlheinzniebuhr/pythonbenchmark
InformationsquelleAutor der Antwort karlpy
Einen weiteren Weg zur Nutzung timeit:
InformationsquelleAutor der Antwort raacer
Können Sie timeit.
Hier ist ein Beispiel, wie test naive_func, nimmt parameter mit Python REPL:
Brauchen Sie nicht eine wrapper-Funktion, wenn-Funktion hat keine Parameter.
InformationsquelleAutor der Antwort Vlad Bezden
Die einzige Möglichkeit, die mir einfällt, ist mit
time.time()
.Hoffe, dass wird helfen.
InformationsquelleAutor der Antwort Trooper Z
Können Sie auch Zeit.Uhr
schreiben Sie Ihre Programm hier.
Zeit.time() gibt uns die neue Zeit des Computers.
InformationsquelleAutor der Antwort involtus