Compartilhando uma fila de resultados entre vários processos

| | | | | | | | | | | | | |

A documentação do módulo multiprocessing mostra como passar uma fila para um processo iniciado com multiprocessing.Process. Mas como posso compartilhar uma fila com processos de trabalho assíncronos iniciados com apply_async? Eu não preciso de junção dinâmica ou qualquer outra coisa, apenas uma maneira para os trabalhadores (repetidamente) reportarem seus resultados de volta à base.

import multiprocessing def worker(name, que): que. put("%d está pronto" % name) if __name__ == "__main__": pool = multiprocessing.Pool(processes=3) q = multiprocessing.Queue() workers = pool.apply_async(worker, (33, q)) 

Isso falha com: RuntimeError: objetos de fila só devem ser compartilhados entre processos por meio de herança. Entendo o que isso significa e entendo o conselho de herdar em vez de requerem pickling/unpickling (e todas as restrições especiais do Windows). Mas como faço passar a fila de uma maneira que funcione? Não consigo encontrar um exemplo e tentei várias alternativas que falharam de várias maneiras. Ajuda por favor?