У меня есть несколько устройств, с которых мне нужно получать обновления статуса.Объект сокета - это все, что у меня есть, а socket.recv () - это все, что мне нужно для получения статуса.Помещенные в однопоточное приложение, проблем не возникает:
class Device:
def receive(self):
log.debug("receive waiting: %r", self.device_id)
try:
packet = self.socket.recv(255)
except Exception as e:
self.report_socket_error(e)
self.reconnect()
log.debug("received response: %r", self.device_id)
d = Device()
d.connect()
while True:
d.receive()
Однако тот же код, заключенный в многопоточность. Класс Thread вызывает взаимные блокировки и забавное поведение.Обмотка замками ничего не изменила.Я проследил проблему до вызова socket.recv () ... Итак, как реализовать несколько потоков, где каждый поток владеет одним сокетом (1 поток владеет исключительно одним сокетом), которые могут одновременно ожидать данные?
Заранее спасибо