Was ist der richtige Weg, um 2 Mal in Python zu vergleichen, um einen Codeabschnitt schneller zu testen? Ich habe versucht, die API-Dokumente zu lesen. Ich bin mir nicht sicher, ob ich das Timedelta verstehe.
Bisher habe ich diesen Code:
from datetime import datetime
tstart = datetime.now()
print t1
# code to speed test
tend = datetime.now()
print t2
# what am I missing?
# I'd like to print the time diff here
python
datetime
time
time-measurement
BuddyJoe
quelle
quelle
Antworten:
datetime.timedelta
ist nur der Unterschied zwischen zwei Datumsangaben ... es ist also wie ein Zeitraum in Tagen / Sekunden / Mikrosekundenc.microseconds
Beachten Sie, dass nur der Mikrosekunden-Teil des Zeitdeltas zurückgegeben wird! Für Timing-Zwecke immer verwendenc.total_seconds()
.Mit datetime.timedelta können Sie alle Arten von Mathematik ausführen, z.
Es könnte jedoch sinnvoller sein, die CPU-Zeit anstelle der Wanduhrzeit zu betrachten. Dies ist jedoch betriebssystemabhängig. Überprüfen Sie unter Unix-ähnlichen Systemen den Befehl 'time'.
quelle
int(c.total_seconds() / 60)
in diesem FallSeit Python 2.7 gibt es die Methode timedelta.total_seconds (). Um die verstrichenen Millisekunden zu erhalten:
quelle
Möglicherweise möchten Sie stattdessen das timeit-Modul verwenden.
quelle
Sie könnten auch verwenden:
Oder Sie können die Python-Profiler verwenden .
quelle
start = time.clock()
wird gedrucktDeprecationWarning: time.clock has been deprecated in Python 3.3 and will be removed from Python 3.8: use time.perf_counter or time.process_time instead
.Ich weiß, dass dies spät ist, aber ich benutze es wirklich sehr gerne:
time.time()
gibt Ihnen Sekunden seit der Epoche. Da dies eine standardisierte Zeit in Sekunden ist, können Sie einfach die Startzeit von der Endzeit subtrahieren, um die Prozesszeit (in Sekunden) zu erhalten.time.clock()
ist gut für das Benchmarking, aber ich habe es als nutzlos empfunden, wenn Sie wissen möchten, wie lange Ihr Prozess gedauert hat. Zum Beispiel ist es viel intuitiver zu sagen "mein Prozess dauert 10 Sekunden" als zu sagen "mein Prozess dauert 10 Prozessortakteinheiten".Im ersten Beispiel oben wird eine Zeit von 0,05 für time.clock () gegenüber 0,06377 für time.time () angezeigt.
Im zweiten Beispiel zeigt die Prozessorzeit irgendwie "0" an, obwohl der Prozess eine Sekunde lang geschlafen hat.
time.time()
zeigt etwas mehr als 1 Sekunde korrekt an.quelle
import time
ErklärungDer folgende Code sollte die Zeit anzeigen ...
quelle
Sie können einfach den Unterschied ausdrucken:
quelle
Ich bin kein Python-Programmierer, aber ich weiß, wie man Google verwendet, und ich habe Folgendes gefunden: Sie verwenden den Operator "-". So vervollständigen Sie Ihren Code:
Es sieht außerdem so aus, als könnten Sie die Funktion strftime () verwenden, um die Zeitspannenberechnung zu formatieren, um die Zeit zu rendern, was Sie jedoch glücklich macht.
quelle
time.time () / datetime ist gut für den schnellen Gebrauch, aber nicht immer 100% genau. Aus diesem Grund verwende ich gerne einen der Standard-Lib- Profiler (insbesondere Hotshot), um herauszufinden, was was ist.
quelle
Sie können in die aussehen wollen Profil Module. Sie können besser ablesen, wo sich Ihre Verlangsamungen befinden, und ein Großteil Ihrer Arbeit wird vollständig automatisiert.
quelle
Hier ist eine benutzerdefinierte Funktion, die die Funktionen von Matlab / Octave
tic
toc
nachahmt.Anwendungsbeispiel:
Funktion:
quelle
Sie können timeit wie dieses verwenden, um ein Skript mit dem Namen module.py zu testen
quelle
Pfeil: Bessere Daten und Zeiten für Python
quelle