Maison >développement back-end >Tutoriel Python >Comment partager une file d'attente de résultats entre plusieurs processus en Python ?

Comment partager une file d'attente de résultats entre plusieurs processus en Python ?

Susan Sarandon
Susan Sarandonoriginal
2024-10-19 18:45:02762parcourir

How to Share a Result Queue Between Multiple Processes in Python?

Comment partager une file d'attente de résultats entre plusieurs processus

Lorsque vous travaillez avec des processus de travail asynchrones à l'aide de apply_async du module multiprocessing (), il est important de réfléchir à la manière de partager une file d'attente en toute sécurité. L'erreur « RuntimeError : Les objets de file d'attente ne doivent être partagés qu'entre les processus via l'héritage » souligne la nécessité de transmettre la file d'attente de manière à éviter les problèmes de décapage/décapage.

Pour résoudre ce problème, nous pouvons exploiter le multiprocessing.Manager (), qui fournit un moyen de gérer les objets et de les rendre accessibles à différents travailleurs.

<code class="python">import multiprocessing

def worker(name, que):
    que.put("%d is done" % name)

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

Dans cet exemple, nous créons un objet Manager (m) et l'utilisons pour gérer la file d'attente (q). Ce faisant, nous créons un segment de mémoire partagée qui permet à plusieurs processus d'accéder à la file d'attente en toute sécurité, même dans des scénarios asynchrones.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn