Mini-Projekt: Messwerkzeuge
Anforderungen
- Dekorator
@zeitmisst Dauer einer Funktion - ODER Kontextmanager
timer - gerne beides
- Demo mit absichtlich langsamer Funktion (time.sleep)
Beispiellösung
Lösung anzeigen
import time
from contextlib import contextmanager
def zeit(fn):
def wrapper(*args, **kwargs):
start = time.time()
ergebnis = fn(*args, **kwargs)
print(fn.__name__, "dauerte", round(time.time() - start, 4), "s")
return ergebnis
return wrapper
@contextmanager
def timer(label="block"):
start = time.time()
yield
print(label, "dauerte", round(time.time() - start, 4), "s")
@zeit
def arbeit():
time.sleep(0.2)
return 42
print(arbeit())
with timer("schlafen"):
time.sleep(0.1)
Kapitel 45 geschafft!
Als Nächstes: Reguläre Ausdrücke.