Source code for algbench.utils.timer

"""
In many situations we need to measure the time. This timer makes it easy.
"""

import time
import typing


[docs] class Timer: """ A simple timer for measuring time. """
[docs] def __init__(self, runtime: float = 0.0): self.runtime = runtime self.start = time.time() self.saved_times: typing.List[typing.Tuple[float, str]] = []
[docs] def remaining(self) -> float: """ The remaining time. """ return self.runtime - self.time()
[docs] def time(self) -> float: """ Time since the creation of the timer. """ return time.time() - self.start
[docs] def reset(self, runtime: typing.Optional[float] = None): if runtime is not None: self.runtime = runtime self.start = time.time() self.saved_times = []
def __bool__(self): """ Returns true if there is still time remaining. """ return not self.is_out_of_time()
[docs] def is_out_of_time(self) -> bool: return self.remaining() < 0
[docs] def lap(self, label): self.saved_times.append((self.time(), label))
[docs] def get_laps(self): return list(self.saved_times)
[docs] def check(self): if not bool(self): raise TimeoutError()