import numpy as np from datetime import datetime from threading import Thread, Event from time import sleep, time from queue import Queue from random import random class MeasureWork(Thread): def __init__(self, message_queue): super().__init__(name="Measure") self.message_queue = message_queue self.produceData = Event() self.file = open("temp.csv", "w") def run(self): while True: if self.produceData.is_set(): temp = random() ts = datetime.now() self.message_queue.put((ts, temp)) self.file.write(f"{ts} - {temp}\n") else: self.file.flush() sleep(1) class Model(object): """docstring for Model.""" def __init__(self): super(Model, self).__init__() self.data = [] self.t = [] self.measureQueue = Queue() self.measureThread = MeasureWork(self.measureQueue) self.measureThread.start() def startMeasureing(self): self.measureThread.produceData.set() print("I started meas") def saveMeasureing(self, path='temp_temp.csv'): print("I saved meas") np.savetxt(path, np.array(self.data)) def stopMeasureing(self): self.measureThread.produceData.clear() print("I started meas") def clear(self): self.data = [] self.t = [] print("I started meas") @property def getData(self): while not self.measureQueue.empty(): t, data = self.measureQueue.get() self.data.append(data) self.t.append(t) print(self.data) return self.t, self.data