Heim  >  Artikel  >  Backend-Entwicklung  >  Wie aktualisiere ich globale Variablen von untergeordneten Prozessen im Multiprocessing und stelle sicher, dass sie für den übergeordneten Prozess zugänglich sind?

Wie aktualisiere ich globale Variablen von untergeordneten Prozessen im Multiprocessing und stelle sicher, dass sie für den übergeordneten Prozess zugänglich sind?

Susan Sarandon
Susan SarandonOriginal
2024-11-06 15:08:02298Durchsuche

How do I update global variables from child processes in multiprocessing and ensure they are accessible by the parent process?

Aktualisierungen globaler Multiprocessing-Variablen werden nicht an das übergeordnete Element zurückgegeben

Wenn Multiprocessing zum Einrichten eines sekundären Prozesses verwendet wird, wird eine eigene Python-Instanz erstellt globaler Staat. Dieser globale Zustand ist isoliert, sodass alle von untergeordneten Prozessen an globalen Variablen vorgenommenen Änderungen für den übergeordneten Prozess unsichtbar sind.

Darüber hinaus nutzen die meisten Multiprozessor-Abstraktionen Pickle, um Daten zu übertragen. Alle über Proxys übermittelten Daten müssen auswählbar sein, einschließlich aller von einem Manager bereitgestellten Objekte. Im Abschnitt „Manager“ wird betont, dass andere Prozesse mithilfe von Proxys auf gemeinsame Objekte zugreifen können.

Ähnliche Einschränkungen gelten für Warteschlangen, obwohl diese Informationen in der Dokumentation weggelassen werden. Ein kurzer Test bestätigt, dass alle Daten in Warteschlangen auch auswählbar sein müssen.

Wenn das Auswählen Ihrer Daten weiterhin nicht möglich ist, sollten Sie erwägen, sie als Ctype-Objekt zu speichern und eine Speicherreferenz an einen untergeordneten Prozess zu übergeben. Dieser Ansatz ist etwas riskant und sollte Situationen vorbehalten bleiben, in denen andere Möglichkeiten ausgeschöpft sind.

In Ihrem Fall ist es entscheidend, die Komplexität von LORR zu verstehen. Wenn es sich um eine Python-Klasse handelt, kann das Erstellen einer Unterklasse davon und das Definieren der Methoden setstate und getstate das Pickling erleichtern.

Alternativ können Sie die erforderlichen Daten aus einer LORR-Instanz extrahieren und übergeben durch eine einfache Zeichenfolge kann ausreichen. Erwägen Sie die Verwendung von Warteschlangen, um Nachrichten zwischen dem Hauptprozess und untergeordneten Prozessen zu senden, um Objektmethoden direkt aufzurufen, wie im Schema oben dargestellt.

Das obige ist der detaillierte Inhalt vonWie aktualisiere ich globale Variablen von untergeordneten Prozessen im Multiprocessing und stelle sicher, dass sie für den übergeordneten Prozess zugänglich sind?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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