[PYTHON] Parallele Berechnung (Pathos) beim Umgang mit Objekten, die nicht eingelegt werden können

Überblick

Wir werden die Lösung vorstellen, wenn der folgende Fehler auftritt, wenn eine prozessparallele Berechnung mit "joblib" und "multiprocessing" durchgeführt wird. Die Ursache ist, dass das für die Kommunikation zwischen Prozessen verwendete Pickle nicht verwendet werden kann.

error1}


TypeError: cannot pickle 'SwigPyObject' object

error2}


PicklingError: Could not pickle the task to send it to the workers.

Lösungen

Verwenden Sie "Pathos". Es kann mit pip install pathos installiert werden.

code}


# some_func, some_Bitte erstellen Sie eine entsprechende Liste
from pathos.multiprocessing import ProcessingPool
pool = ProcessingPool(nodes=4)
result_list = pool.map(lambda x: some_func(x), some_list)

Bonus

Wenn es sich zum Zeitpunkt des Speicherns um Gurke handelt, kann es mit "Dill" gelöst werden.

Referenz

Recommended Posts

Parallele Berechnung (Pathos) beim Umgang mit Objekten, die nicht eingelegt werden können
Angelegenheiten, die mit sklearn nicht importiert werden können
Untersuchung beim Import kann nicht mit Python durchgeführt werden
Importieren Sie Bibliotheken, die mit PyCharm nicht per Pip installiert werden können
[android] Wenn AVD nicht mit verweigerter Berechtigung verwendet werden kann
Behandlung des Fehlers, dass ein HTTP-Abruffehler in gpg auftritt und der Schlüssel nicht abgerufen werden kann
Lösung, wenn das Bild mit tkinter [python] nicht angezeigt werden kann
Wenn Times New Roman nicht mit matplotlib (Ubuntu) verwendet werden kann
Beispiele und Lösungen, die mit scipy.optimize.least_squares nicht gut optimiert werden können
Parallele Berechnung mit iPython Notebook
Wenn USB nicht formatiert werden konnte
Wenn pydub nicht installiert werden kann
Hier finden Sie eine Zusammenfassung der Dinge, die beim Umgang mit komplexen Zahlen in Python hilfreich sein können
Maßnahmen, um SSL nicht mit Pycharm installieren oder importieren zu können
Es wurde ein Fehler behoben, bei dem node.surface mit python3 + mecab nicht abgerufen werden konnte