如何使用starmap将子数组传递给多处理工作者

时间:2018-05-24 14:15:36

标签: python numpy multiprocessing worker

我正在尝试并行处理numpy数组上的处理。我想在子阵列中划分数组并将每个数组发送到它的多处理工作者(cpus-1的数量)。以下代码运行良好,每个worker在函数f中接收数组的片段(数组的索引):

pool.map_async(f, [slice(i, i + step) for i in range(start, stop, step)])

我尝试了类似的starmap_async方法,因为我需要向函数发送更多参数。这里,子阵列(垫子)的开始和结束像素列表在单独的语句中进行。但是,在这种情况下,只激活一个工作程序,并将整个列表提交给它(不仅仅是第一个元素)。

mats = [(i, i + part) for i in range(0, shp[1], part)]
pool.starmap_async(f, [(mats, 0.4, 0.9, shp, shp_o)])

这是星图功能的功能还是我没有正确执行?任何评论都赞赏。

0 个答案:

没有答案