Heim > Artikel > Backend-Entwicklung > Wie kann man große, schreibgeschützte Arrays und Python-Objekte im Multiprocessing ohne Speicheraufwand freigeben?
Frage:
Wie können Sie in Multiprocessing ein großes, lese- Nur ein Array oder ein beliebiges Python-Objekt über mehrere Prozesse hinweg, ohne dass Speicheraufwand entsteht?
Antwort:
In Betriebssystemen, die die Copy-on-Write-Fork()-Semantik verwenden, Unveränderte Datenstrukturen stehen allen untergeordneten Prozessen ohne zusätzlichen Speicherverbrauch zur Verfügung. Stellen Sie einfach sicher, dass das gemeinsame Objekt unverändert bleibt.
Für Arrays:
Effizienter Ansatz:
Schreibbare gemeinsame Objekte:
Multiprocessing bietet zwei Methoden:
Beliebige Python-Objekte:
Optimierungsbedenken:
Der Overhead Der im bereitgestellten Codeausschnitt beobachtete Fehler wird nicht durch Speicherkopien verursacht. Stattdessen ist es auf die Serialisierung/Deserialisierung der Funktionsargumente (das arr-Array) zurückzuführen, die bei Verwendung des Manager-Proxys zu Leistungseinbußen führt.
Das obige ist der detaillierte Inhalt vonWie kann man große, schreibgeschützte Arrays und Python-Objekte im Multiprocessing ohne Speicheraufwand freigeben?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!