使用pool.map在Python中运行多个函数

3

我需要同时运行多个函数。我尝试了以下方法:

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

出了什么问题?

3个回答

3
你将整个元组作为第一个参数 f 传递给函数 smap,但这不是你想要的函数。你可以将 smap 更改为:
```python smap(*f) ```
def smap(f_args):
    f, *args = f_args
    return f(*args)

这将正确地从Pool.map中接受只一个参数,并在调用内部拆分fargs

3
你期望 pool.map 内部在 smap 中为你执行拆包操作,但这是逻辑无法处理的。你需要明确地自己完成这个操作。
def smap(params): 
    function, *args = params 

    return function(*args) 

1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接