Wie vermeide ich diesen Beizfehler und was ist der beste Weg, diesen Code in Python zu parallelisieren?

8

Ich habe den folgenden Code.

%Vor%

Es erzeugt den folgenden Fehler.

%Vor%

Der Inhalt von functionA ist unwichtig und erzeugt keinen Fehler. Der Fehler scheint zu auftreten, wenn ich versuche, Funktion B zuzuordnen. Wie entferne ich diesen Fehler und was ist der beste Weg, um diesen Code in Python 2.6 zu parallelisieren?

    
idealistikz 02.07.2012, 03:19
quelle

1 Antwort

18

Der Grund, aus dem Sie dieses Verhalten am wahrscheinlichsten sehen, liegt in der Reihenfolge, in der Sie Ihren Pool, Objekte und Funktionen definieren. multiprocessing ist nicht ganz dasselbe wie die Verwendung von Threads. Jeder Prozess erstellt und lädt eine Kopie der Umgebung. Wenn Sie Funktionen in Bereichen erstellen, die für die Prozesse möglicherweise nicht verfügbar sind, oder wenn Sie Objekte vor dem Pool erstellen, schlägt der Pool fehl.

Versuchen Sie zuerst, einen Pool vor Ihrer großen Schleife zu erstellen:

%Vor%

Bewegen Sie dann Ihr Callable außerhalb der dynamischen Schleife:

%Vor%

Betrachten Sie dieses Beispiel ...

gebrochen

%Vor%

funktioniert

%Vor%     
jdi 02.07.2012 03:42
quelle

Tags und Links