每个进程都有一套自己的内存, 所以在子进程中创建的list或者dict没法直接传回子进程, 只能用多进程模块提供的队列或者管道。
python多进程获取返回值:
pool = mp.Pool(processes=8)
for j in range(0, n):
res = pool.apply_async(MICS, args=(
LUCC2[j * x_slice:j * x_slice + x_slice, :],
NPP2[j * x_slice:j * x_slice + x_slice, :],
TMP2[j * x_slice:j * x_slice + x_slice, :],
f_clay2[j * x_slice:j * x_slice + x_slice, :],
LUCC_land2[j * x_slice:j * x_slice + x_slice, :],
j))
res1.append(res)
pool.close()
pool.join()
res2 = [i.get() for i in res1]
本文探讨了Python中多进程如何处理子进程间的通信问题,特别是子进程产生的数据如何通过队列或管道传递回父进程。示例展示了使用`multiprocessing`模块的`Pool`进行并行计算,并将结果存储在列表中,最后通过`.get()`方法获取每个子进程的计算结果。
2万+

被折叠的 条评论
为什么被折叠?



