Совместное использование очереди результатов между несколькими процессами
Документация для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). Но какделать Я передаю очередь таким образом, чтобы это работало? Я не могу найти пример, и я попробовал несколько альтернатив, которые потерпели неудачу различными способами. Помогите, пожалуйста?