Я пишу небольшую параллельную программу на Python 3.6. У меня вопрос:
моя программа имеет небольшой класс Thread (который имитирует поток);
у этого класса есть 3 метода, которые выполняются как подпотоки:
class myThread(Thread):
def __init__(self, identifier):
super(myThread, self).__init__()
def fun1(self):
# broadcasts messages
def fun2(self):
# event that occurs when a message arrives
# do something
def fun3(self):
# event that occurs when a message arrives
# do something
def run(self):
t1 = Thread(target = self.fun1)
t2 = Thread(target = self.fun2)
t3 = Thread(target = self.fun3)
t1.start()
t2.start()
t3.start()
Как видите, fun1()
отправляет широковещательные сообщения (он отправляет объекты), которые должны получить другие 2 потока. Как это можно легко реализовать в Python?
Я видел, что самый простой способ - это использовать Queue
, но у меня есть некоторые сомнения ... где я должен поставить эту очередь? Как общий метод может использовать представленный объект, не опустошая эту очередь (поскольку «широковещательный» объект должен использоваться другими методами)? Как метод выполняет свое тело каждый раз, когда новый объект добавляется в очередь (как если бы это было событие)?
Большое спасибо всем!