Python timeit(): Ausführungszeit messen mit praktischen Beispielen
Python timeit(): Ausführungszeit messen mit praktischen Beispielen
Was ist Python timeit()?
Python timeit() ist ein eingebautes Modul, das entwickelt wurde, um die Ausführungszeit kleiner Code-Snippets mit hoher Präzision zu messen. Standardmäßig führt es die Anweisung eine Million Mal aus und meldet den schnellsten Lauf, was hilft, die Leistung verschiedener Implementierungen zu vergleichen.
Syntax
timeit.timeit(stmt, setup, timer, number)
Parameter
- stmt – Der zu messende Code. Standard ist
pass. - setup – Code, der einmal vor
stmtausgeführt wird. Standard istpass. - timer – Optionale Timer-Funktion. Das Modul stellt einen geeigneten Standard bereit.
- number – Wie oft
stmtausgeführt wird. Standard ist 1.000.000.
Modul zuerst importieren:
import timeit
Beispiel 1 – Einfacher Ausdruck timen
# Eine grundlegende arithmetische Operation testen
import timeit
print(timeit.timeit("output = 10*5"))
Typische Ausgabe:
0.06127880399999999
Dies zeigt die Zeit (in Sekunden) für den schnellsten von einer Million Läufen.
Mehrzeiligen Code timen
timeit kann mehrzeiligen Code verarbeiten, indem Anweisungen mit Semikolons getrennt oder ein Tripel-Quote-String übergeben wird.
Semikolons verwenden
import timeit
print("Die benötigte Zeit ist ", timeit.timeit(stmt="a=10;b=10;sum=a+b"))
Ausgabe:
Die benötigte Zeit ist 0.137031482
Tripel-Quote-Strings verwenden
import timeit
import_modul = "import random"
testcode = '''
def test():
return random.randint(10, 100)
'''
print(timeit.repeat(stmt=testcode, setup=import_modul))
Ausgabe:
C:\pythontest>python testtimeit.py Die benötigte Zeit ist 0.182619178
Wichtige Methoden
- timeit.default_timer() – Gibt die aktuelle Zeit mit der bestmöglichen Auflösung zurück.
- timeit.repeat(stmt, setup, timer, repeat, number) – Führt
timeit()wiederholt aus und gibt eine Liste der besten Zeiten für jeden Lauf zurück.
Beispiel 1 – timeit.timeit() verwenden
# Eine Funktion testen, die eine zufällige Ganzzahl zurückgibt
import timeit
import_modul = "import random"
testcode = '''
def test():
return random.randint(10, 100)
'''
print(timeit.timeit(stmt=testcode, setup=import_modul))
Ausgabe:
0.46715912400000004
Beispiel 2 – default_timer() verwenden
# Einen einzelnen Funktionsaufruf messen
import timeit
import random
def test():
return random.randint(10, 100)
startzeit = timeit.default_timer()
print("Die Startzeit ist :", startzeit)
test()
print("Der Zeitunterschied ist :", timeit.default_timer() - startzeit)
Ausgabe:
Die Startzeit ist : 0.220261875 Der Zeitunterschied ist : 0.0004737320000000045
Beispiel 3 – timeit.repeat() verwenden
# Den Test fünfmal ausführen und die besten Zeiten erfassen
import timeit
import_modul = "import random"
testcode = '''
def test():
return random.randint(10, 100)
'''
print(timeit.repeat(stmt=testcode, setup=import_modul, repeat=5))
Ausgabe:
[0.43638873, 0.5040939680000001, 0.5069179909999999, 0.3943449330000002, 0.3546886979999999]
Jeder Eintrag ist die beste Zeit für eine Iteration der 1.000.000 Läufe.
Kommandozeilen-Verwendung
Sie können timeit direkt aus der Shell aufrufen:
python -m timeit [-n N] [-r N] [-s S] [-t] [-c] [-h] [code statement ...]
-n N– Anzahl der Schleifen für die Anweisung.-r N– Wie oft der gesamte Timing-Prozess wiederholt wird.-s S– Setup-Code, der einmal vor dem Timing ausgeführt wird.-t–time.time()als Timer verwenden.-c–time.clock()als Timer verwenden.-h– Hilfe anzeigen.
Beispiel
C:\pythontest>python -m timeit -s 'text="hello world"' 20000000 loops, best of 5: 13.1 nsec per loop
Eine weitere praktische Möglichkeit ist der Aufruf von timeit aus der REPL:
import timeit
print("Die benötigte Zeit ist ", timeit.timeit(stmt="a=10;b=10;sum=a+b"))
Ausgabe:
Die benötigte Zeit ist 0.15048536300000137
Warum timeit() das beste Werkzeug zum Timen von Python-Code ist
- Es führt die Anweisung oft aus (Standard 1.000.000) und gibt den schnellsten Lauf zurück, was eine zuverlässige Schätzung liefert.
- Garbage Collection ist während des Timings deaktiviert, was verhindert, dass sie die Ergebnisse verfälscht.
- Es wählt automatisch den präzisesten Timer für Ihr Betriebssystem (z. B.
time.clock()unter Windows,time.time()unter macOS/Linux).
Zusammenfassung
Das timeit-Modul ist unverzichtbar für das Benchmarking kurzer Python-Snippets. Seine Parameter sind unkompliziert:
- stmt – Zu messender Code.
- setup – Einmaliger Setup-Code.
- timer – Optionale Timer-Funktion.
- number – Wie oft
stmtläuft.
Stellen Sie sicher, timeit für genaue, reproduzierbare Messungen zu verwenden.
Python
- Python: Aktuelle Uhrzeit und Zeitzonendaten einfach abrufen
- Pythons time-Modul meistern: Funktionen, Structs und praktische Beispiele
- Pythons str.count(): Zeichen & Teilstrings zählen mit Beispielen
- Python format()-Strings meistern mit klaren Beispielen
- Pythons String.find()-Methode meistern: Syntax, Beispiele & Alternativen
- Python Lambda-Funktionen meistern: Praxisbeispiele & Best Practices
- Python round()-Funktion erklärt mit praktischen Beispielen
- Pythons map()-Funktion meistern: Syntax, Beispiele und Best Practices
- Python Counter in collections: Effizientes Zählen, Aktualisieren und arithmetische Operationen
- type() und isinstance() in Python verstehen: Praktische Beispiele