From ee3b5ee941564eecd436ac440a0ac01d138954fe Mon Sep 17 00:00:00 2001 From: Stefan Harmuth Date: Mon, 25 Dec 2023 12:29:49 +0100 Subject: [PATCH] Stopwatch() can now be restarted and will automatically sum up all intervals between start() and stop() calls --- src/tools/stopwatch.py | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/src/tools/stopwatch.py b/src/tools/stopwatch.py index 0c9e4c9..c3d517c 100644 --- a/src/tools/stopwatch.py +++ b/src/tools/stopwatch.py @@ -8,6 +8,7 @@ class StopWatch: stopped: int | None = None def __init__(self, auto_start=True): + self.total_elapsed = 0 if auto_start: self.start() @@ -15,9 +16,9 @@ class StopWatch: self.started = perf_counter_ns() self.stopped = None - def stop(self) -> float: + def stop(self): self.stopped = perf_counter_ns() - return self.elapsed() + self.total_elapsed += self.elapsed() reset = start @@ -28,10 +29,10 @@ class StopWatch: return self.stopped - self.started def elapsed_string(self) -> str: - return human_readable_time_from_ns(self.elapsed()) + return human_readable_time_from_ns(self.total_elapsed) def avg_elapsed(self, divider: int) -> float: - return self.elapsed() / divider + return self.total_elapsed / divider def avg_string(self, divider: int) -> str: return human_readable_time_from_ns(int(self.avg_elapsed(divider)))