"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Como compartilhar uma fila de resultados entre vários processos usando multiprocessing.Manager?

Como compartilhar uma fila de resultados entre vários processos usando multiprocessing.Manager?

Publicado em 2024-11-08
Navegar:789

How to Share a Result Queue Between Multiple Processes Using multiprocessing.Manager?

Compartilhando uma fila de resultados entre vários processos usando multiprocessing.Manager

No multiprocessamento, compartilhar uma fila entre processos pai e filho é essencial para comunicação e recuperação de resultados. No entanto, usar apply_async para iniciar processos de trabalho assíncronos apresenta desafios no compartilhamento de filas.

Para superar o erro "Os objetos da fila só devem ser compartilhados entre processos por meio de herança", podemos utilizar multiprocessing.Manager. Esta classe de gerenciador permite a criação e gerenciamento de recursos compartilhados, incluindo filas.

Ao incluir nossa criação de fila no contexto multiprocessing.Manager(), podemos torná-la acessível a todos os trabalhadores. Veja como modificar o código:

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

Agora, cada trabalhador pode interagir com o objeto q compartilhado e relatar os resultados ao processo base. Essa abordagem permite uma comunicação de resultados eficiente e confiável, mantendo a natureza assíncrona de apply_async.

Declaração de lançamento Este artigo foi reimpresso em: 1729334537 Se houver alguma violação, entre em contato com [email protected] para excluí-lo
Tutorial mais recente Mais>

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3