我在将字典传递multiprocessing.poll.apply_async
给子处理时遇到问题。
pool = mp.Pool(processes=cores) #Create a pool of workers, one for each core
for job in range(cores): #Prep to assign each core a job
pool.apply_async(initialize, args=(job,z,w,floor,p,))
pool.close()
pool.join()
w 是具有.neighbors
属性的对象。这个属性是一个dict
存储 id 的拓扑结构(即它的邻居)。当我尝试在子进程中访问此属性时,我返回一个空的dict
. 当我尝试直接传递 dict 时,我返回一个空的dict
:
neighbor_dict = w.neighbors
...
pool.apply_async(initialize, args=(job,z,w,neighbor_dict,floor,p,))
我认为我不需要使用经理来访问字典,因为我从不写信;我只需要读取权限。
此外,这个问题的相似之处在于 OP 正在使用多处理。与使用池相反,他们使用的是 Process。我也在 POSIX 系统上,所以应该受到 fork() 的影响。