在下面的代码中,我的主要代码示例,我尝试使用pathos.multiprocessing
来提高循环迭代的速度。使用多处理实现的每次迭代的输出是 2-D数组。我使用pathos.multiprocessing
代替multiprocessing
,因为我想在类方法中使用它。我使用了apipe
的{{1}}方法来收集列表中的输出,但它返回一个空列表。我不知道为什么会失败
pathos.multiprocessing
任何建议?
答案 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
需要self
和k
,因此当您将其作为实例方法调用时,必须在管道调用中提供k
。没有callback
- 如果你想要一个回调,你需要在你的函数中添加一个。
请注意,返回值的检索方法是(1)获取返回对象,(2)通过调用返回对象上的get
来检索。
您在apipe
循环中使用for
,这指示我建议您使用pool.amap
(或pool.imap
) - 然后您可以执行此操作并行循环。