通过多处理返回二维数组

时间:2015-07-28 14:45:24

标签: python numpy multiprocessing dill pathos

在下面的代码中,我的主要代码示例,我尝试使用pathos.multiprocessing来提高循环迭代的速度。使用多处理实现的每次迭代的输出是 2-D数组。我使用pathos.multiprocessing代替multiprocessing,因为我想在类方法中使用它。我使用了apipe的{​​{1}}方法来收集列表中的输出,但它返回一个空列表。我不知道为什么会失败

pathos.multiprocessing

任何建议?

1 个答案:

答案 0 :(得分:0)

我是pathos作者。我尝试了你的代码,它运行,但没有产生错误,并且在result_list中没有产生任何结果。我认为这是因为您错误地使用apipe。正确使用apipe如下:

>>> import pathos
>>> def squared(x):
...   return x**2
... 
>>> pool = pathos.multiprocessing.ProcessingPool()
>>> res = pool.apipe(squared, 5)
>>> res.get()
25

self.bootstrapping需要selfk,因此当您将其作为实例方法调用时,必须在管道调用中提供k。没有callback - 如果你想要一个回调,你需要在你的函数中添加一个。

请注意,返回值的检索方法是(1)获取返回对象,(2)通过调用返回对象上的get来检索。

您在apipe循环中使用for,这指示我建议您使用pool.amap(或pool.imap) - 然后您可以执行此操作并行循环。