具有可变默认参数的`partial`

时间:2020-02-29 14:39:14

标签: python

所以我在将partial与多处理池一起使用时遇到问题。以下是最小的,可重现的代码段。

from multiprocessing import Pool
from functools import partial

a = [1, 2, 3]
b = a.copy()


def change(i, x):
    x[i] = 0

# method 1
for i in range(3):
    change(i, a)
print(a)
# Output: [0, 0, 0]

# method 2
with Pool(2) as pool:
    pool.map(partial(change, x=b), list(range(3)))
print(b)
# Output: [1, 2, 3]

请参阅后面的方法不会更改传递的列表。我猜这可以用function is the level-1 object in python来解释,但不知道如何。有什么想法吗?

0 个答案:

没有答案