我需要并行运行多个函数。我试过了
from multiprocessing import Pool
def smap(f, *args):
return f(*args)
def somma(*args):
a=args[0]
b=args[1]
return a+b
def prodotto(*args):
a=args[0]
b=args[1]
return a*b
pool = Pool(processes=2)
a=2
b=4
res=pool.map(smap, [(somma,a,b),(prodotto,a,b)])
print(res)
错误如下:
TypeError: 'tuple' object is not callable
怎么了?
最佳答案
您将整个元组作为第一个参数 f
传递给函数 smap
,这不是您想要的函数。您可以将 smap
更改为:
def smap(f_args):
f, *args = f_args
return f(*args)
这将正确地只接受来自 Pool.map
的一个参数,并在调用中拆分 f
和 args
。
关于python - 使用 pool.map 在 Python 中运行多个函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63738083/