如何在Python中运行具有不同时间间隔的多个函数

时间:2017-03-10 19:35:51

标签: python python-multiprocessing serial-communication

我正在尝试使用python通过串行通信从飞行控制板请求数据。

有几个数据字段,但希望以不同的速率更新。例如,字段A将每0.001更新一次,字段B将每0.02秒更新一次,字段C每1秒更新一次。

由于可能存在数据包丢失,因此有时可能需要更长时间才能读取数据和time.sleep()将导致不准确的时间间隔。此外,进行串行通信的类也不是线程安全的,因此不能使用任何可能导致线程安全问题的方法。

以下是该过程的主要结构,我能做些什么来让它以我希望的时间间隔请求数据?

class WorkerProcess(multiprocessing.Process):
    def __init__(self, port, addresslist, task_queue, result_queue):
        multiprocessing.Process.__init__(self)
        self.exit = multiprocessing.Event()
        self.serialPort = port
        self.addressList = addresslist
        self.sch = SerialCommunication(self.serialPort, self.addressList)
        self.task_queue = task_queue
        self.result_queue = result_queue
        self.modeSelection = 0

    def run(self):
        while not self.exit.is_set():
            ...
            self.sch.requestA()
            self.sch.requestB()
            self.sch.requestC()
            ...

    def shutdown(self):
        print("Shutdown initiated")
        try:
            self.sch.stopSerial()
        except Exception:
            print(Exception)
        print('Process stopped')
        self.exit.set()

0 个答案:

没有答案