关于python:如何将args和kwargs传递给多处理池?

How to pass args and kwargs to multiprocessing Pool?

如果我有以下的功能:

1
2
def foo(a, b, c=2, d=6):
    return a + b + c + d

我想与multiprocessing并行。

我怎么1, 2, d=10通过以下的支配?args)2和1 kwarg吗?

我看到这个帖子,但它似乎并没有真的让它平行。在另一个例子可能是有用的设置,但它是很难理清。


怎么样:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
import multiprocessing

def foo(a, b, c=2, d=6):
    return a + b + c + d

def foo_callback(result):
    print(result)

def foo_error(error):
    raise error

pool = multiprocessing.Pool()

for (a, b, c, d) in ((1, 2, 3, 4),
                     (2, 4, 6, 8),
                     (3, 6, 9, 12)):
    pool.apply_async(
        foo,
        args=(a, b),
        kwds={"c":c,"d":d},
        callback=foo_callback,
        error_callback=foo_error
    )
pool.close()
pool.join()

哪些印刷品:

1
2
3
4
5
10
20
30

Process finished with exit code 0

我猜你想把KWD当作口述传下去。钥匙应该是琴弦。