如何在多处理中将一个管理器变量和另一个变量传递给目标函数?



我想将 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 个进程d1d2

但是我收到以下错误:

类型错误:f(( 缺少 2 个必需的位置参数:"d1"和"d2">

您可以使用zipitertools.repeat创建一个可迭代对象,其中一个参数是迭代器,其他参数是重复的

pool.map(f, zip(x, itertools.repeat(d1), itertools.repeat(d2)))

相关内容

  • 没有找到相关文章

最新更新