Wie kann der Fehler „Warteschlangenobjekte sollten nur durch Vererbung von Prozessen gemeinsam genutzt werden' bei der Mehrfachverarbeitung behoben werden?

Susan Sarandon
Freigeben: 2024-10-19 18:48:30
Original
599 Leute haben es durchsucht

How to Resolve the

Gemeinsame Warteschlangen mit Multiprocessing verwalten

Im Multiprocessing-Modul von Python erfordert die Erstellung einer gemeinsamen Warteschlange zwischen Prozessen sorgfältige Überlegungen bei der Verwendung von multiprocessing.apply_async() um asynchrone Arbeitsprozesse zu starten. „Warteschlangenobjekte sollten nur durch Vererbung zwischen Prozessen geteilt werden.“ Beim Versuch, eine Warteschlange direkt an Arbeiter zu übergeben, tritt ein Fehler auf.

Um dieses Problem zu beheben, verwenden Sie multiprocessing.Manager, um die Warteschlange zu verwalten und sie für Arbeiterprozesse zugänglich zu machen. multiprocessing.Manager bietet Methoden zum Erstellen von Managerobjekten, die verschiedene Datentypen in einem gemeinsam genutzten Speichersegment steuern und serialisieren.

Der folgende Codeausschnitt zeigt, wie eine Warteschlange mithilfe von multiprocessing.Manager für mehrere Arbeitsprozesse freigegeben wird:

<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 erstellt multiprocessing.Manager() ein Manager-Objekt (m), das gemeinsam genutzte Daten verwaltet und Proxy-Objekte bereitstellt, die an Arbeitsprozesse übergeben werden können. Durch den Aufruf von m.Queue() erstellen wir eine vom Manager verwaltete Warteschlange, auf die alle Arbeitsprozesse zugreifen können. Der Manager serialisiert dann das Proxy-Objekt und übergibt es an den Worker, sodass dieser sicher mit der gemeinsam genutzten Warteschlange kommunizieren kann.

Das obige ist der detaillierte Inhalt vonWie kann der Fehler „Warteschlangenobjekte sollten nur durch Vererbung von Prozessen gemeinsam genutzt werden' bei der Mehrfachverarbeitung behoben werden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php
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
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!