PicklingError in Python Multiprocessing
Bei der Verwendung von Python Multiprocessing kann es zu einem „PicklingError: Pickle
Problem mit verschachtelten Funktionen
In In Ihrem speziellen Fall kann der Fehler dadurch verursacht werden, dass die Funktion, die Sie auswählen, eine verschachtelte Funktion aufruft. Obwohl die äußere Funktion f() auf der obersten Ebene definiert ist, versucht die Mehrfachverarbeitung, die verschachtelte Funktion auszuwählen, und schlägt fehl, wenn sie eine Funktion g() aufruft, die eine verschachtelte Funktion h() enthält.
Lösung
Um dieses Problem zu beheben, verschieben Sie die Funktion, die Sie auswählen möchten, auf die oberste Ebene des Moduls. Alternativ können Sie eine separate Funktion auf der obersten Ebene erstellen, die die verschachtelte Funktion aufruft, und stattdessen diese Funktion auswählen.
Zum Beispiel:
# Original code def f(): g() def g(): h() # Corrected code def f(): wrapper_function() def wrapper_function(): g() h()
Durch die Definition von wrapper_function() auf der obersten Ebene und wenn Sie es einlegen, können Sie den Beizfehler vermeiden.
Zusätzlich Überlegungen
Das obige ist der detaillierte Inhalt vonWie löst man den „PicklingError: Can't pickle' von Python Multiprocessing?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!