После прочтения я узнал, что pickle не может сериализовать функцию или класс в Python (по крайней мере, в версии 3.6 в windows). Но я также видел много людей, использующих dill
для сериализации. Но когда я попробовал, я получил ошибки. Ниже приведен простой код, который я использовал:
import dill
def cube(x):
x**x**x
with open('outfile', 'wb') as pickle_file:
dill.dump(cube, pickle_file)
И вот ошибка, которую я получил:
py4j.protocol.Py4JError: An error occurred while calling o0.__getstate__. Trace:
py4j.Py4JException: Method __getstate__([]) does not exist
at py4j.reflection.ReflectionEngine.getMethod(ReflectionEngine.java:335)
at py4j.reflection.ReflectionEngine.getMethod(ReflectionEngine.java:344)
at py4j.Gateway.invoke(Gateway.java:279)
at py4j.commands.AbstractCommand.invokeMethod(AbstractCommand.java:133)
at py4j.commands.CallCommand.execute(CallCommand.java:79)
at py4j.GatewayConnection.run(GatewayConnection.java:209)
at java.lang.Thread.run(Thread.java:748)
Чтобы подвести итог моей необходимости сериализации, я хочу использовать сериализацию, потому что я бы нравится использовать многопроцессорность (класс пула) в Python. После прочтения документации я go узнал, что класс пула выбирает объект для выполнения многопроцессорной обработки и как функцию или класс не может быть выбран, библиотека pathos.multiprocessing заявляет, что делает это, так как для сериализации использует укроп. Но когда я использовал его, он дал мне ошибку, о которой я упоминал в своем посте
Может ли кто-нибудь помочь мне выяснить проблему или сообщить, есть ли другой способ сериализации класса или функции в * 1017? *.
Заранее спасибо