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

Wie teile ich eine Ergebniswarteschlange zwischen mehreren Prozessen in Python?

Susan Sarandon
Freigeben: 2024-10-19 18:45:02
Original
746 Leute haben es durchsucht

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>
Nach dem Login kopieren

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!

Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage