结合并行处理和dask阵列来处理多个图像堆栈

2024-09-25 00:32:03 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个包含nh5文件的目录,每个文件都有m个要过滤的图像堆栈。对于每个图像,我将使用dask并行数组运行过滤(高斯和拉普拉斯),以加快处理(Ref to Dask)。我将通过scikit映像中的apply_parallel()函数使用dask数组。
我将使用20 cpus在小型服务器上运行处理。在

我想咨询一下哪种并行策略更适合使用:

1)对h5文件和所有CPU进行顺序处理以进行dask处理
2) 使用x核并行处理h5文件,并使用剩余的20-x进行dask处理。
3) 分配资源并并行处理h5文件、每个h5文件中的图像以及dask的剩余资源。在

谢谢你的帮助!在


Tags: 文件to函数图像目录refparallel堆栈
2条回答

使用make进行并行化。在

使用make -j20可以告诉make并行运行20个进程。在

通过使用多个进程,可以避免“全局解释器锁”的开销。对于独立的任务,使用多个独立的流程更有效(如果您有疑问,基准)。Make非常适合于处理需要对每个文件应用相同命令的整个文件夹—它通常用于编译源代码,但也可以用于运行任意命令。在

最好用最简单的方法并行化。如果您有多个文件,并且只想在每个文件上运行相同的计算,那么这几乎肯定是最简单的方法。如果这会使你的计算资源饱和,那么你可以在这里停下来,而不必深入研究更复杂的方法。在

如果这确实是您的情况,那么您可以使用daskmakeconcurrent.futures或任何其他库来并行化done。在

如果还有其他问题,比如试图并行化操作本身或者确保内存不会耗尽,那么您将被迫进入更复杂的系统,如dask,但情况可能并非如此。在

相关问题 更多 >