import time class Writer: def __init__(self): self.previous = Line(None) def write(self, v): latest = Line(v) chosen = Line.choose(self.previous, latest) if chosen.v != self.previous.v: print(chosen) self.previous = chosen class Line: def __init__(self, v): self.t = time.time() self.v = v def __str__(self): return f'@{self.t} | {self.v}' def choose(a, b): if not a: return b if not b: return a latest = max([a,b], key=lambda x:x.t) oldest = min([a,b], key=lambda x:x.t) if not latest.v and time.time() - oldest.t < 1: return oldest return latest