#!/usr/bin/env python3 import time from typing import Callable class Timer(object): """ with timer.Timer() as t: do_the_thing() walltime = t() print(f'That took {walltime}s.') """ def __init__(self) -> None: self.start = None self.end = None def __enter__(self) -> Callable[[], float]: self.start = time.perf_counter() self.end = 0.0 return lambda: self.end - self.start def __exit__(self, *args) -> bool: self.end = time.perf_counter() return True