added a threaded monitor

This commit is contained in:
2023-02-23 19:48:01 +01:00
parent 770fb5a021
commit d9c28ec42c
+43 -1
View File
@@ -1,3 +1,4 @@
from threading import Thread
from itertools import count
from slic.utils import tqdm_sleep
@@ -9,8 +10,49 @@ def monitor(name, sensor, record_time, grum_client, cfg=None):
print(f"iteration #{x}")
with sensor:
tqdm_sleep(record_time)
y = float(sensor.get_aggregate())
y = sensor.get_aggregate()
y = float(y)
grum_client.append_data(name, (x, y))
class Monitor:
def __init__(self, name, sensor, record_time, grum_client, cfg=None):
self.name = name
self.sensor = sensor
self.record_time = record_time
self.grum_client = grum_client
self.cfg = cfg or {}
self.stop()
def stop(self):
self.thread = None
self.running = False
def start(self):
self.thread = Thread(target=self.run)
self.running = True
self.thread.start()
def run(self):
name = self.name
sensor = self.sensor
record_time = self.record_time
grum_client = self.grum_client
grum_client.new_plot(name, self.cfg)
for x in count():
print(f"iteration #{x}")
with sensor:
tqdm_sleep(record_time)
y = sensor.get_aggregate()
y = float(y)
grum_client.append_data(name, (x, y))
if not self.running:
break