我需要并行运行多个函数。我试过这个
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
怎么了
您希望
pool.map
内部为您在smap
中进行解包,但这是逻辑无法处理的事情。你需要自己明确地做这件事只需使用
starmap
,因为map
只支持一个iterable参数 https://docs.python.org/3/library/multiprocessing.html#multiprocessing.pool.Pool.starmap您正在将整个元组作为第一个参数
f
传递给函数smap
,该函数不是您想要的函数。您可以将smap
更改为:这将正确地只接受调用内来自
Pool.map
和f
和args
的一个参数相关问题 更多 >
编程相关推荐