import functools
import logging
import time
log = logging.getLogger(__name__)
def timed(fn):
@functools.wraps(fn)
def wrapper(*args, **kwargs):
start = time.perf_counter()
try:
return fn(*args, **kwargs)
finally:
ms = (time.perf_counter() - start) * 1000
log.info("%s took %.2f ms", fn.__qualname__, ms)
return wrapper
@timed
def expensive(n: int) -> int:
return sum(i * i for i in range(n))
expensive(1_000_000)
# INFO expensive took 47.31 ms
Create a free account and build your private vault. Share publicly whenever you want.