所以我在将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
来解释,但不知道如何。有什么想法吗?