У меня есть приложение (на самом деле плагин для другого приложения), который управляет потоками для связи с внешними сенсорными устройствами. Внешние датчики отправляют события в приложение, но приложение также может отправлять действия на датчики. Существует несколько типов устройств, каждый из которых обладает уникальными свойствами (температура, давление и т. Д.), Которые требуют специального кодирования. Все коммуникации с сенсорными устройствами превышают IP.Сообщение Python, передаваемое уникальным потокам
В приложениях я создаю нить для каждого экземпляра датчика. Это пример кода
self.phThreadDict[phDevId] = tempsensor(self, phDevId, phIpAddr, phIpPort, phSerial, self.triggerDict)
self.phThreadDict[phDevId].start()
В каждой нити I обработчики установки обратного вызова для событий, отправленных датчиком, а затем перейти в петлю на конце.
while not self.shutdown:
self.plugin.sleep(0.5)
Затем потоки обрабатывают входящие события и совершают вызовы в основной поток или в реальную программу, которая породила основной поток. Все это работает очень хорошо.
Но иногда мне также нужно отправлять запросы на конкретный датчик. Методы определены в каждом потоке для этой цели, и я вызываю эти методы из основного потока. Например:
self.phThreadDict[dev.id].writeDigitalOutput(textLine, lcdMessage)
Это также работает, но я считаю, что код на самом деле выполняется в основном потоке, а не в потоке конкретного к датчику.
Мой вопрос: Какие параметры у меня есть для передачи работы конкретному потоку цели и выполнения потока выполнения работы, а затем возврата или неудачи?