32 lines
688 B
Python
32 lines
688 B
Python
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
|