python - 使用池类在 Python 中进行多处理
问题描述
我想在windows(zeppelin notebook)的python(特别是Pool Class)中使用多处理。但是在阅读了很多之后我才知道池类在其后端使用了泡菜,并且只能用于可以泡菜的对象。由于我无法在 Python 中使用 pickle 序列化函数或类(至少在 3.6 版本中),我发现 pathos.multiprocessing 库可用于执行多处理,因为它使用dill
而不是后端的 pickledill
包文档可以序列化任何东西。但是当我使用它时,我得到了错误。下面是我使用的简单代码:
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_async 或 map_async,我也会遇到同样的错误。有人可以帮我找出问题所在。
提前致谢
解决方案
另外,如果我使用这样的代码:
import multiprocessing as mp
def cube(x):
return x**3
if __name__ == '__main__':
p = mp.Pool(4)
p.apply(cube, [1,2,3])
我没有看到任何返回的输出。不确定是什么问题。
推荐阅读
- c# - 从 MVC pryect 添加和删除用户
- ios - 在 IOS 上使用 Flutter 的 GoogleSignIn - 构建失败
- json - 我将如何使用 python json 从下面的 JSON 中获取坐标值到 pandas 数据框中?
- python - pygame keyup 未正确注册
- python - 结果 arima 模型转移 -Python
- string - 如何使用 t-sql 获取字符串中的第二个单词?
- scroll - 页面突然滚动回顶部
- image - 有什么方法可以获取谷歌课堂表格问题插入标题图片网址
- delphi - FMX 框架的 bitblt 替换
- kotlin - Kotlin:类型推断失败。预期类型不匹配:推断类型为 Pair
但是对 预计