Skip to content

Instantly share code, notes, and snippets.

@tomowarkar
Last active January 12, 2021 11:00
Show Gist options
  • Save tomowarkar/3d48ae57b8a2a226299734ff54426d3a to your computer and use it in GitHub Desktop.
Save tomowarkar/3d48ae57b8a2a226299734ff54426d3a to your computer and use it in GitHub Desktop.
My simple timer
import time
class Timer:
_events = []
def _add_event(self):
"""Add a event time recode"""
self._events.append(time.perf_counter())
def start(self):
"""Starts the timer"""
if not self.isRunning:
self._add_event()
def stop(self):
"""Stops (or pauses) the timer"""
if self.isRunning:
self._add_event()
def reset(self):
"""Resets the timer"""
self._events = []
@property
def isRunning(self):
return bool(len(self._events) % 2)
@property
def lap_time(self):
if self.isRunning:
return time.perf_counter() - self._events[-1]
return 0
@property
def elapsed(self):
"""Calculate total amount of elapsed time"""
closed_lap = sum(e - b for b, e in zip(self._events[::2], self._events[1::2]))
return closed_lap + self.lap_time
if __name__ == '__main__':
t = Timer()
t.start()
time.sleep(0.5)
t.stop()
time.sleep(0.5)
t.start()
time.sleep(0.5)
print(t.elapsed)
time.sleep(1)
t.stop()
from datetime import timedelta
print(str(timedelta(seconds=t.elapsed)))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment