我想在windows(齐柏林飞艇笔记本)中使用python中的多处理(特别是池类)。但是在阅读了很多之后,我知道Pool类在其后端使用pickle,并且只能用于可以被pickle的对象。由于我无法在Python中使用pickle序列化函数或类(至少在3.6版本中),我发现pathos.multiprocessing库可以用于执行多处理,因为它使用dill
而不是后端的pickle,根据dill
包文档,后端的pickle可以序列化任何内容。但是当我使用它时,我犯了错误。下面是我使用的简单代码:
import pathos.multiprocessing as mp
def cube(x):
return x**3
p = mp.Pool(4)
p.apply(cube, [1,2,3])
这就是我得到的错误:
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)
即使使用map、apply\u async或map\u async,我也会遇到相同的错误。有人能帮我找出这个问题吗
提前谢谢
如果我使用如下代码:
我没有看到任何返回的输出。不知道问题是什么
相关问题 更多 >
编程相关推荐