Source code for pyadi.timer

import time

events = {}
[docs] class Timer(): pref = ['m', 'ยต', 'n', 'p']
[docs] def __init__(self, func, kind, verbose=0, **kw): self.func = func self.kind = kind self.t0 = 0 self.t1 = 0 self.active = False self.verbose = verbose
def __enter__(self): self.t0 = time.time() self.active = True def __exit__(self, *args): self.t1 = time.time() self.active = False self.register() if self.verbose > 0: print(f'Timer {self.func} {self.kind}: {self}') if self.kind == 'adrun': ev = self.getev(self.func, 'run') if ev: f = self.millis() / ev['t'] ot = self.fmt(ev['t']) if self.verbose > 0: print(f'AD factor {self.func}: {self} / {ot} = {f:.2f}')
[docs] def millis(self): return 1e3*((time.time() if self.active else self.t1) - self.t0)
[docs] def fmt(self, t): ms = t for i in range(len(self.pref)): p = self.pref[i] if ms > 1: break ms *= 1e3 return f'{ms:.2f} {p}s'
[docs] def __str__(self): return self.fmt(self.millis())
[docs] def register(self): key = f'{self.func}{self.kind}' events[key] = {'kind': self.kind, 'func': self.func, 't': self.millis()}
[docs] def getev(self, func, kind): key = f'{func}{kind}' try: return events[key] except: pass
# (c) 2023 AI & IT UG # Author: Johannes Willkomm jwillkomm@ai-and-it.de