Совместное использование очереди результатов несколькими процессами

В документации по модулю multiprocessingпоказано, как передать очередь процессу, запущенному с multiprocessing.Process. Но как я могу разделить очередь с асинхронными рабочими процессами, запущенными с apply_async? Мне не нужно динамическое соединение или что-то еще, просто способ для рабочих (неоднократно )сообщать о своих результатах обратно на базу.

import multiprocessing
def worker(name, que):
    que.put("%d is done" % name)

if __name__ == '__main__':
    pool = multiprocessing.Pool(processes=3)
    q = multiprocessing.Queue()
    workers = pool.apply_async(worker, (33, q))

Это не удается с: RuntimeError: Queue objects should only be shared between processes through inheritance. Я понимаю, что это значит, и я понимаю совет наследовать, а не требовать травления/распаковывания (и все специальные ограничения Windows ). Но как пройти очередь так, чтобы это работало? Я не могу найти пример, и я пробовал несколько альтернатив, которые по-разному терпели неудачу. Помоги пожалуйста?

77
задан Darkonaut 8 April 2019 в 16:26
поделиться