我想将 2 个管理器字典和另一个变量传递给多处理中的目标函数:
import multiprocessing as mp
def f(x, d1, d2):
d1[x] = 2*x
d2[x] = x*x
if __name__ == '__main__':
x = [1, 2, 3, 4]
manager = mp.Manager()
d1 = manager.dict()
d2 = manager.dict()
MAX_PROCESSES = 4
pool = mp.Pool(MAX_PROCESSES)
pool.map(f, (x, d1, d2))
在这样做时,我希望process[i]
获得x[i]
,以及共享字典的所有 4 个进程d1
和d2
。
但是我收到以下错误:
类型错误:f(( 缺少 2 个必需的位置参数:"d1"和"d2">
您可以使用zip
和itertools.repeat
创建一个可迭代对象,其中一个参数是迭代器,其他参数是重复的
pool.map(f, zip(x, itertools.repeat(d1), itertools.repeat(d2)))