58 lines
1.2 KiB
Python
58 lines
1.2 KiB
Python
#!/usr/bin/env python3
|
|
|
|
from time import time
|
|
|
|
|
|
class Clock(object):
|
|
"""
|
|
Simple timing clock
|
|
|
|
prec sets precision of returned time deltas
|
|
|
|
tick() returns time delta since last tick
|
|
tock() returns time delta since the start of the clock
|
|
"""
|
|
|
|
def __init__(self, prec=2):
|
|
self.prec = prec
|
|
self.start = self.last = time()
|
|
|
|
def __repr__(self):
|
|
tn = type(self).__name__
|
|
delta = self.tock()
|
|
return f"{tn} started {delta} seconds ago"
|
|
|
|
def tick(self):
|
|
"""Time delta since last tick"""
|
|
now = time()
|
|
delta = now - self.last
|
|
self.last = now
|
|
return self._fmt_delta(delta)
|
|
|
|
def tock(self):
|
|
"""Time delta since the start of the clock"""
|
|
now = time()
|
|
delta = now - self.start
|
|
return self._fmt_delta(delta)
|
|
|
|
def _fmt_delta(self, delta):
|
|
"""Format time deltas using the precision given to the constructor"""
|
|
if self.prec is not None:
|
|
delta = round(delta, self.prec)
|
|
return delta
|
|
|
|
|
|
|
|
|
|
|
|
if __name__ == "__main__":
|
|
from time import sleep
|
|
|
|
c = Clock()
|
|
for i in range(5):
|
|
sleep(float(i) / 10)
|
|
print(i, c.tick(), c.tock())
|
|
|
|
|
|
|