ompartilhar uma fila de resultados entre vários processo
A documentação para omultiprocessing
módulo @ mostra como passar uma fila para um processo iniciado commultiprocessing.Process
. Mas como posso compartilhar uma fila com processos assíncronos de trabalho iniciados comapply_async
? Não preciso de união dinâmica ou qualquer outra coisa, apenas uma maneira de os trabalhadores (repetidamente) relatarem seus resultados de volta à bas
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))
Isso falha com:RuntimeError: Queue objects should only be shared between processes through inheritance
. Entendo o que isso significa e entendo os conselhos para herdar, em vez de exigir decapagem / remoção de picles (e todas as restrições especiais do Windows). Mas comoFa Eu passo na fila de uma maneira que funcione? Não encontro um exemplo e tentei várias alternativas que falharam de várias maneiras. Ajuda por favor