Ich habe ein Multiprocessing-Programm in Python geschrieben. Ich verwende multiprocessing.Manager().list()
, um die Liste im Subprozess zu teilen. Zuerst füge ich einige Aufgaben im Hauptprozess hinzu. Starten Sie dann einige Unterprozesse, um Aufgaben auszuführen, die in der gemeinsam genutzten Liste den Unterprozessen ebenfalls Aufgaben zur freigegebenen Liste hinzufügen. Aber ich habe eine Ausnahme wie folgt:
Ich finde etwas über die Verwendung der geteilten Liste in Python-Multiprocessing wie dies . Aber immer noch eine Ausnahme. Ich habe keine Ahnung von der Bedeutung der Ausnahme. Und was ist der Unterschied zwischen der allgemeinen Liste und der manager.list?
der Code wie folgt:
%Vor% Das Problem ist, dass Ihr Hauptprozess sofort beendet wird, nachdem Sie alle Ihre Worker-Prozesse gestartet haben, wodurch Ihr Manager
beendet wird. Wenn Ihr Manager
beendet wird, kann keines der Kinder die freigegebene Liste verwenden, die Sie an sie übergeben haben. Sie können es beheben, indem Sie join
verwenden, um auf das Beenden aller untergeordneten Elemente zu warten. Stellen Sie nur sicher, dass Sie tatsächlich start
alle Ihre Prozesse vor dem Aufruf von join
:
Tags und Links python multiprocessing