我有以下问题:我想使用来自pathos.multiprocessing的amap。如何切换* args到pathos'amap
import pathos as pt
class Foo:
def __init__(self):
pass
def f(self, a, b, c):
return a + b + c
def g(self):
pool = pt.multiprocessing.ProcessPool()
def _h(a, b, c):
k = self.f(a, b, c)
return k/2
result = [pool.amap(_h, (i, j, k)) for i in range(3) for j in range(5) for k in range(7)]
return result
a = Foo()
b = a.g()
b[0].get()
尽管我可以在f中完成所有工作,但有必要使用这两个函数f和g。
如果我运行这个代码,我得到的g期望3个参数,但一个给出。
TypeError: _h() takes exactly 3 arguments (1 given)
我该如何解决这个问题?
我没有病态,也找不到它的文档,但是好像你可以重写'_h'来取一个元组或者看看pathos是否有一个'starmap'类似物。 – user2357112
......等等,你将一个元组传递给amap,而不是元组列表。这似乎是完全错误的;在名称中带有'map'的东西应该使用迭代来映射函数,而不是单个参数元组。 – user2357112
@ user2357112 thx您的评论。你可以在这里找到pathos:https://github.com/uqfoundation/pathos。关于你的第二个评论。即使我使用元组列表,它也不起作用 – math