Zum Hauptinhalt springen

Mini-Projekt: Messwerkzeuge

Anforderungen

  • Dekorator @zeit misst 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.