Maintain a single lossy timeseries (PoC)
This commit is contained in:
commit
5630f43e62
|
@ -0,0 +1,36 @@
|
|||
#!/usr/bin/python3
|
||||
|
||||
# PoC
|
||||
|
||||
# add a new entry and remove a random old entry with a probability
|
||||
# depending on the target size
|
||||
|
||||
import argparse
|
||||
import json
|
||||
import random
|
||||
import time
|
||||
|
||||
ap = argparse.ArgumentParser()
|
||||
|
||||
ap.add_argument("--targetsize", type=int, default=1000)
|
||||
ap.add_argument("file")
|
||||
ap.add_argument("value", type=float)
|
||||
|
||||
args = ap.parse_args()
|
||||
|
||||
ts = []
|
||||
try:
|
||||
with open(args.file) as f:
|
||||
ts = json.load(f)
|
||||
except FileNotFoundError as e:
|
||||
pass # Ok, will create
|
||||
|
||||
now = time.time()
|
||||
ts.append((now, args.value))
|
||||
if random.random() > 1 - len(ts) / args.targetsize:
|
||||
i = random.randrange(0, len(ts))
|
||||
ts.pop(i)
|
||||
|
||||
with open(args.file, "w") as f:
|
||||
json.dump(ts, f)
|
||||
print(len(ts))
|
Loading…
Reference in New Issue