Heim > Backend-Entwicklung > Python-Tutorial > Wie kann ich ein Wörterbuch zwischen mehreren Prozessen in Python teilen und ändern?

Wie kann ich ein Wörterbuch zwischen mehreren Prozessen in Python teilen und ändern?

Susan Sarandon
Freigeben: 2024-11-14 17:44:02
Original
772 Leute haben es durchsucht

How to Share and Modify a Dictionary Between Multiple Processes in Python?

Mehrfachverarbeitung: Wörterbuchfreigabe zwischen Prozessen

Stellen Sie sich ein Szenario vor, in dem mehrere Prozesse in einer gemeinsam genutzten Warteschlange Q arbeiten und ein globales Wörterbuch bearbeiten , D. Überraschenderweise wird beim Zugriff auf D nach dem Beitritt zu Q trotz beobachteter Änderungen in untergeordneten Prozessen ein leeres Wörterbuch angezeigt.

Dieses Verhalten rührt von Synchronisierungsproblemen her. Jeder Prozess arbeitet in seinem eigenen Speicherbereich und Änderungen, die in untergeordneten Prozessen an D vorgenommen werden, werden nicht automatisch im Hauptprozess widergespiegelt. Um dies zu beheben, sind Synchronisierungsmaßnahmen erforderlich.

Lösung: Verwendung eines Manager-Objekts

Die Python-Standardbibliothek bietet eine Lösung mithilfe des Manager-Objekts. Dieses Objekt bietet synchronisierten Zugriff auf gemeinsame Daten zwischen Prozessen:

from multiprocessing import Process, Manager

def f(d):
    d[1] += '1'
    d['2'] += 2

if __name__ == '__main__':
    manager = Manager()

    d = manager.dict()
    d[1] = '1'
    d['2'] = 2

    p1 = Process(target=f, args=(d,))
    p2 = Process(target=f, args=(d,))
    p1.start()
    p2.start()
    p1.join()
    p2.join()

    print(d)
Nach dem Login kopieren

In diesem Beispiel erstellt die dict()-Methode des Manager-Objekts ein gemeinsames Wörterbuch d, auf das alle Prozesse zugreifen können. Änderungen, die innerhalb der untergeordneten Prozesse an d vorgenommen werden, werden über den vom Manager-Objekt verwalteten gemeinsamen Speicher an den Hauptprozess weitergegeben.

Ausgabe:

$ python mul.py
{1: '111', '2': 6}
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonWie kann ich ein Wörterbuch zwischen mehreren Prozessen in Python teilen und ändern?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage