Heim >Backend-Entwicklung >Python-Tutorial >Wie kann ich Rückgabewerte von untergeordneten Prozessen im Multiprocessing abrufen?
So erfassen Sie Rückgabewerte von prozessbasierten Funktionen im Multiprocessing
In Multiprocessing-Anwendungen besteht häufig die Notwendigkeit, die Rückgabewerte von abzurufen Funktionen, die von untergeordneten Prozessen ausgeführt werden. Der Grund dafür, dass dies nicht ohne weiteres zugänglich ist, liegt darin, dass untergeordnete Prozesse Werte nicht direkt an den Hauptprozess zurückgeben können. Es gibt jedoch Techniken, um diese Werte effektiv zu erfassen.
Im gegebenen Beispiel wird eine Liste von Arbeitsprozessen erstellt, um bestimmte Aufgaben auszuführen und ihre Prozessnummern zurückzugeben. Wenn man jedoch versucht, auf die Rückgabewerte der in der Liste „Jobs“ gespeicherten Prozessobjekte zuzugreifen, wird deutlich, dass diese Werte nicht direkt in ihren Attributen gespeichert sind.
Um diese Herausforderung zu meistern, gibt es einen anderen Ansatz erforderlich. Eine effektive Lösung beinhaltet die Verwendung einer gemeinsam genutzten Variablen, beispielsweise eines Wörterbuchs. Diese gemeinsam genutzte Variable ermöglicht die Kommunikation zwischen den untergeordneten Prozessen und dem Hauptprozess.
Im modifizierten Beispiel wird ein Manager erstellt, um den gemeinsamen Speicher zwischen Prozessen zu verwalten. Ein Wörterbuch, return_dict, wird initialisiert und als Argument an die Worker-Funktion übergeben. Innerhalb des Workers wird die Prozessnummer als Schlüssel und die Prozessnummer selbst als Wert zugewiesen.
Sobald alle Prozesse ihre Ausführung abgeschlossen haben, schließt sich der Hauptprozess den untergeordneten Prozessen an und greift dann auf das gemeinsame return_dict zu. Durch Iteration über seine Werte erhält man die gewünschten Rückgabewerte der untergeordneten Prozesse. Dieser Ansatz erfasst die Rückgabewerte effektiv durch Kommunikation zwischen Prozessen.
Das obige ist der detaillierte Inhalt vonWie kann ich Rückgabewerte von untergeordneten Prozessen im Multiprocessing abrufen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!