Heim >Backend-Entwicklung >Python-Tutorial >Wie kann ich Rückgabewerte von multiprocessing.Process-Instanzen in Python abrufen?
Extrahieren von Rückgabewerten aus Funktionen in Multiprocessing.Process-Instanzen
Die Möglichkeit, Rückgabewerte von an multiprocessing.Process übergebenen Funktionen abzurufen, kann eine sein nützliche Funktion, insbesondere wenn eine asynchrone Aufgabenausführung erforderlich ist. Leider sind die Werte nicht sofort vom Process-Objekt aus zugänglich, was einen alternativen Ansatz erforderlich macht.
Wertspeicherung verstehen
Im Gegensatz zu herkömmlichen Python-Funktionen werden diese an multiprocessing.Process übergeben haben kein Rückgabewertattribut. Stattdessen wird der Wert an einem separaten Ort gespeichert, insbesondere in einem Shared-Memory-Objekt. Dies liegt daran, dass die mithilfe von Multiprocessing erstellten Prozesse in separaten Speicherbereichen ausgeführt werden, wodurch ein direkter Zugriff auf Variablen im Hauptprozess verhindert wird.
Verwendung gemeinsam genutzter Variablen für die Kommunikation
Um auf die zuzugreifen Um einen Rückgabewert zu erhalten, müssen wir eine Form der Kommunikation zwischen den Prozessen einrichten. Eine effektive Methode ist die Verwendung gemeinsam genutzter Variablen. Hierbei handelt es sich um Objekte, die es mehreren Prozessen ermöglichen, Daten gleichzeitig zu teilen und darauf zuzugreifen. In unserem Fall erstellen wir mit multiprocessing.Manager() ein Managerobjekt und ein gemeinsames Wörterbuch. Das Wörterbuch fungiert als gemeinsam genutzte Variable.
Zugriff auf den Rückgabewert
Innerhalb der Worker-Funktion füllen wir das gemeinsam genutzte Wörterbuch mit dem gewünschten Rückgabewert. Nachdem der Hauptprozess auf den Abschluss aller Aufgaben gewartet hat, kann er auf diese Werte im freigegebenen Wörterbuch zugreifen und diese abrufen. Durch den Einsatz dieser Strategie extrahieren wir effektiv die Rückgabewerte, ohne den Multiverarbeitungsansatz zu beeinträchtigen.
Beispielimplementierung
Das folgende Beispiel zeigt die Implementierung von gemeinsam genutzten Variablen zum Abrufen von Rückgabewerten Werte:
import multiprocessing def worker(procnum, return_dict): """worker function""" print(str(procnum) + " represent!") return_dict[procnum] = procnum if __name__ == "__main__": manager = multiprocessing.Manager() return_dict = manager.dict() jobs = [] for i in range(5): p = multiprocessing.Process(target=worker, args=(i, return_dict)) jobs.append(p) p.start() for proc in jobs: proc.join() print(return_dict.values())
Ausgabe:
0 represent! 1 represent! 3 represent! 2 represent! 4 represent! [0, 1, 3, 2, 4]
Dieser Ansatz ermöglicht es uns, die Rückgabewerte der Worker-Funktion abzurufen und die nahtlose Kommunikation zwischen Prozessen in der zu demonstrieren Multiprocessing-Framework.
Das obige ist der detaillierte Inhalt vonWie kann ich Rückgabewerte von multiprocessing.Process-Instanzen in Python abrufen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!