Zeit.Zeit vs. timeit.timeit
Manchmal, wie ich zu der Zeit, wie lange es dauert die Teile von meinem code ausgeführt werden. Ich habe eine Menge von online-sites und gesehen haben, am großen, wesentlichen zwei Möglichkeiten, dies zu tun. Man time.time
und die andere ist mit timeit.timeit
.
So, ich schrieb ein sehr einfaches Skript, um die beiden zu vergleichen:
from timeit import timeit
from time import time
start = time()
for i in range(100): print('ABC')
print(time()-start, timeit("for i in range(100): print('ABC')", number=1))
Grundsätzlich mal, wie lange es dauert, bis print "ABC" 100 mal in einer for-Schleife. Die Zahl auf der linken Seite die Ergebnisse für time.time
und die Zahl auf der rechten Seite ist für timeit.timeit
:
# First run
0.0 0.012654680972022981
# Second run
0.031000137329101562 0.012747430190149865
# Another run
0.0 0.011262325239660349
# Another run
0.016000032424926758 0.012740166697164025
# Another run
0.016000032424926758 0.0440628627381413
Wie Sie sehen können, manchmal, Zeit.die Zeit ist schneller und manchmal langsamer. Was ist der bessere Weg (genauer)?
timeit
ist die bessere Wahl für das timing von Blöcken von code. Es nutzttime.time()
(time.clock()
für Windows) und deaktiviert das garbage collector. Auch eine Studie ist nicht wirklich genug.timeit
verwendettime.perf_counter
in Python 3.3+- Danke, das wusste ich nicht.
Du musst angemeldet sein, um einen Kommentar abzugeben.
timeit
ist genauer, aus drei Gründen:time.time
odertime.clock
in Python 2 undZeit.perf_counter()
auf Python 3. Sehentimeit.default_timer
.timeit
. Es gibt ein paar kleinere kleinere trickstimeit
verwendet (wieitertools.repeat(None, repetitioncount)
für eine low-friction-Wiederholungsbereich), dass man es zu replizieren, auch wenn Sie wollen, um so "präzise" wietimeit
bekommt.%timeit
ist die integrierte magic-Befehl fürtimeit
, wie etwa%time
. Ist%time
das gleiche, wenn wirtime.clock()
(legen Sie 2 mal.Uhr am Anfang und am Ende der code und die Zeit berechnen, die Differenz). Ich hab hier gelesen, aber nicht genug info ipython.readthedocs.io/en/stable/interactive/magics.html . Dank%time
nicht Wiederholung, während%timeit
tut. Meine Frage war: Ist%time
eine Verknüpfung (built-in-magic-Befehl) zu nennentime.clock()
? Aus dem link ipython.readthedocs.io/en/stable/interactive/magics.html er sagte, dass%timeit
Zeit ist, die Ausführung eines Python-Anweisung mit dertimeit
Modul, aber es sagte nichts über%time
. Ich Frage mich, wo%time
kommt, was genau läuft unter der Haube. Danktime.time()
zu berechnenwall time
.