Heim  >  Artikel  >  Backend-Entwicklung  >  Wie teile ich eine Ergebniswarteschlange zwischen mehreren Prozessen in Python?

Wie teile ich eine Ergebniswarteschlange zwischen mehreren Prozessen in Python?

Susan Sarandon
Susan SarandonOriginal
2024-10-19 18:45:02620Durchsuche

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

So teilen Sie eine Ergebniswarteschlange zwischen mehreren Prozessen

Bei der Arbeit mit asynchronen Arbeitsprozessen unter Verwendung des Moduls Multiprocessing apply_async ()-Funktion verwenden, ist es wichtig zu überlegen, wie eine Warteschlange sicher geteilt werden kann. Der Fehler „RuntimeError: Warteschlangenobjekte sollten nur durch Vererbung zwischen Prozessen geteilt werden“ unterstreicht die Notwendigkeit, die Warteschlange auf eine Weise zu übergeben, die Pickling-/Unpickling-Probleme verhindert.

Um dieses Problem zu beheben, können wir den multiprocessing.Manager nutzen ()-Klasse, die eine Möglichkeit bietet, Objekte zu verwalten und sie verschiedenen Arbeitern zugänglich zu machen.

<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>

In diesem Beispiel erstellen wir ein Manager-Objekt (m) und verwenden es für Verwalten Sie die Warteschlange (q). Auf diese Weise erstellen wir ein gemeinsames Speichersegment, das es mehreren Prozessen ermöglicht, sicher auf die Warteschlange zuzugreifen, auch in asynchronen Szenarien.

Das obige ist der detaillierte Inhalt vonWie teile ich eine Ergebniswarteschlange zwischen mehreren Prozessen in Python?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn