【发布时间】:2013-12-17 09:43:22
【问题描述】:
我有一个管理线程以与外部传感器设备通信的应用程序(实际上是另一个应用程序的插件)。外部传感器向应用程序发送事件,但应用程序也可以向传感器发送动作。有几种类型的设备,每种都有需要特殊编码的独特品质(温度、压力等)。与传感器设备的所有通信都是通过 IP 进行的。
在应用程序中,我为每个传感器实例创建一个线程。这是代码示例
self.phThreadDict[phDevId] = tempsensor(self, phDevId, phIpAddr, phIpPort, phSerial, self.triggerDict)
self.phThreadDict[phDevId].start()
在每个线程中,我为传感器发送的事件设置回调处理程序,然后在最后进入循环。
while not self.shutdown:
self.plugin.sleep(0.5)
线程然后处理传入事件并调用主线程或产生主线程的实际程序。所有这些都非常有效。
但是,有时我还需要向特定传感器发送请求。为此目的在每个线程中定义了方法,我从主线程调用这些方法。例如:
self.phThreadDict[dev.id].writeDigitalOutput(textLine, lcdMessage)
这也行得通,但我相信代码实际上是在主线程中执行的,而不是在传感器特定的线程中执行的。
我的问题是:我有哪些选项可以将工作传递给特定的目标线程并让线程执行工作然后返回成功或失败?
【问题讨论】:
标签: python message-queue python-multithreading