X-Git-Url: https://wannabe.guru.org/gitweb/?a=blobdiff_plain;f=stopwatch.py;h=4e69b6992b278df8eb8e725954d9c610468318aa;hb=532df2c5b57c7517dfb3dddd8c1358fbadf8baf3;hp=516138c50fadb3fc71f29ffe8bf9e29169ddff3c;hpb=6cf1d61b80d02937dbca9025c1922568d42a8c73;p=python_utils.git diff --git a/stopwatch.py b/stopwatch.py index 516138c..4e69b69 100644 --- a/stopwatch.py +++ b/stopwatch.py @@ -1,16 +1,21 @@ #!/usr/bin/env python3 +# © Copyright 2021-2022, Scott Gasch + +"""A simple stopwatch decorator / context for timing things.""" + +import contextlib import time -from typing import Callable, Optional +from typing import Callable, Literal -class Timer(object): +class Timer(contextlib.AbstractContextManager): """ A stopwatch to time how long something takes (walltime). e.g. - with timer.Timer() as t: + with stopwatch.Timer() as t: do_the_thing() walltime = t() @@ -29,6 +34,6 @@ class Timer(object): self.end = 0.0 return lambda: self.end - self.start - def __exit__(self, *args) -> Optional[bool]: + def __exit__(self, *args) -> Literal[False]: self.end = time.perf_counter() - return None # don't suppress exceptions + return False