multiprocessing: Wie Teile ich ein dict von mehreren Prozessen?

Einem Programm erstellt mehrere Prozesse, dass die Arbeit an einem join-in der Lage Warteschlange Q, und kann schließlich zu manipulieren, ein globales Wörterbuch D Ergebnisse gespeichert werden. (so dass jedes Kind Prozess kann verwendet D zum speichern der Ergebnis-und auch sehen, welche Ergebnisse die weitere Kind-Prozesse erzeugt werden)

Wenn ich drucken Sie das Wörterbuch D in einem Kind-Prozess, sehe ich die änderungen, die gemacht wurden auf (D. H. auf D). Aber nach der main-Prozess schließt sich Q, wenn ich drucken Sie D, es ist ein leeres dict!

Ich verstehen, es ist ein Synchronisierungs - /lock-Problem. Kann mir jemand sagen, was hier passiert, und wie kann ich synchronisieren, Zugang zu D?

  • Dieses funktioniert nicht wie erwartet, mindestens auf python 3.7.2 mit osx 10.14.4 Dict ist nicht synchronisiert und der Inhalt wird neu geschrieben, durch andere Prozesse. Aber <code>multiprocessing.Manager().Liste()</code> funktioniert wie erwartet.
InformationsquelleAutor dop | 2011-07-26
Schreibe einen Kommentar