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?