Heim > Artikel > Backend-Entwicklung > Wie kann ich globale Variablen im übergeordneten Prozess aktualisieren, wenn ich Multiprocessing in Python verwende?
Multiprocessing kann globale Variablen im übergeordneten Prozess nicht aktualisieren
Beim Multiprocessing existieren die übergeordneten und untergeordneten Prozesse in separaten Python-Instanzen mit ihren eigenen Speicher und globale Variablen. Änderungen an gemeinsam genutzten globalen Variablen in untergeordneten Prozessen sind für den übergeordneten Prozess nicht zugänglich. Darüber hinaus verhindern die durch Serialisierungsprotokolle wie Pickle auferlegten Einschränkungen die Übertragung von nicht pickbaren Objekten.
Die Herausforderung angehen
Eine mögliche Lösung besteht darin, eine Möglichkeit zum Speichern von Daten zu finden Verwendung von ctype-Objekten, wodurch Verweise auf den Speicher an untergeordnete Prozesse übergeben werden können. Dieser Ansatz ist jedoch nicht einfach.
Spezifisch für das LORR-Objekt
Die Nichtbeizbarkeit des LORR-Objekts stellt eine weitere Herausforderung dar. Um dies zu überwinden, könnte man erwägen, LORR in Unterklassen zu unterteilen und die Methoden __setstate__ und __getstate__ zum Beizen zu implementieren. Alternativ ist es möglicherweise möglich, die erforderlichen Daten aus der LORR-Instanz zu extrahieren und sie als Zeichenfolge über Warteschlangen zu übergeben, wodurch die Notwendigkeit einer Objektserialisierung entfällt. Bei diesem Ansatz werden Nachrichtenanweisungen an untergeordnete Prozesse gesendet und Antworten mit den erforderlichen Daten empfangen.
Das obige ist der detaillierte Inhalt vonWie kann ich globale Variablen im übergeordneten Prozess aktualisieren, wenn ich Multiprocessing in Python verwende?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!