Сегодня я переключил большинство своих реализаций потоков на многопроцессорность, и все прошло отлично, за исключением сообщений диспетчера louie. Конечно, это, вероятно, не последний модуль публикации/подписки, но я использую его, потому что мне уже приходится использовать его с python-openzwave. Я предполагаю, что это как-то связано с невозможностью отправки сообщений между процессами. Мой вопрос в том, есть ли способ сделать это с louie? Если нет -- есть ли модуль сообщений публикации/подписки, который позволяет это делать? Спасибо.
РЕДАКТИРОВАТЬ, было предложено опубликовать код:
Например, вот процесс, который постоянно работает в фоновом режиме и выполняет некоторые проверки компьютера/сети/безопасности:
Вызов для запуска класса проверки:
_ = utilities.Environment()
Класс среды (только инициализация и основная функция):
class Environment(object):
def __init__(self):
self.logger = logging.getLogger(genConfig.LOGGER_NAME)
self.process = multiprocessing.Process(target=self.run_tests)
self.process.daemon = True
self.process.start()
def run_tests(self):
self.zwaveReceived = False
while True:
self.comp_test()
self.net_test()
self.server_test()
self.audio_test()
self.security_test()
self.ups_test()
self.zwave_test()
time.sleep(genConfig.SYS_CHECKS_INTERVAL)
В self.comp_test публикация в конце (я распечатал отсюда и знаю, что это сюда):
if compTest > 0:
wx.CallAfter(dispatcher.send, eventConfig.SYSCHK_LISTENER, orders=eventConfig.EVT_COMP_OFF)
else:
wx.CallAfter(dispatcher.send, eventConfig.SYSCHK_LISTENER, orders=eventConfig.EVT_COMP_ON)
И один из подписчиков:
dispatcher.connect(self.flip_sys_btns, eventConfig.SYSCHK_LISTENER)
Как я уже сказал, я прошел через печать и дошел до того места, где производится публикация, я не дошел до стороны подписчика. Код работал хорошо, когда я использовал потоки, ничего не изменилось, кроме того, что я переключился на многопроцессорность.
run_tests
будет вызыватьself.comp_test
в том же экземпляре вашего класса, при многопроцессорности это не будет тот же самый экземпляр. Этот ответ может прояснить ситуацию: stackoverflow.com/a/29317364/1470749. - person all or None   schedule 10.04.2015