delu.Timer#

class delu.Timer[source]#

Measures time.

Measures time elapsed since the first call to run up to “now” minus pauses.

Note

Measurements are performed via time.perf_counter.

Tutorial

import time

assert delu.Timer()() == 0.0

timer = delu.Timer()
timer.run()  # start
time.sleep(0.01)
assert timer()  # some time has passed

timer.pause()
elapsed = timer()
time.sleep(0.01)
assert timer() == elapsed  # time didn't change because the timer is on pause

timer.run()  # resume
time.sleep(0.01)
assert timer() > elapsed

timer.reset()
assert timer() == 0.0

with delu.Timer() as timer:
    time.sleep(0.01)
# timer is on pause and timer() returns the time elapsed within the context

Timer can be printed and formatted in a human-readable manner:

timer = delu.Timer()
timer.run()
<let's assume that 3661 seconds have passed>
print('Time elapsed:', timer)  # prints "Time elapsed: 1:01:01"
assert str(timer) == f'{timer}' == '1:01:01'
assert timer.format('%Hh %Mm %Ss') == '01h 01m 01s'

Timer is pickle friendly:

import pickle

timer = delu.Timer()
timer.run()
time.sleep(0.01)
timer.pause()
old_value = timer()
timer_bytes = pickle.dumps(timer)
time.sleep(0.01)
new_timer = pickle.loads(timer_bytes)
assert new_timer() == old_value

Methods

__init__

Initialize self.

format

Format the time elapsed since the start in a human-readable string.

pause

Pause the timer.

reset

Reset the timer.

run

Start/resume the timer.

__call__

Get the time elapsed since the start.

__enter__

Measure time within a context.

__exit__

Leave the context and pause the timer.

__getstate__

__setstate__