关于python:令人尴尬的并行For循环,子流程调用

Embarrasingly Parallel For loop, subprocess call

我有一个像这样的python程序:

  • 初始化数据

  • 调用外部软件以计算数据结果(使用子过程),读回外部软件的输出

  • 处理输出,准备好返回步骤1。

  • 我想在集群环境(slurm)中使用多节点环境并行执行步骤2。

    我正在尝试找到最简单的方法,因为我认为子进程如果在批处理文件中分配给python程序,不会自动使用多个节点。

    我尝试使用dask-jobqueue,但这依赖于为每个工作人员创建一个批处理文件,这意味着我将不得不进行10个批处理文件调用,并等待它们全部赶上代码以充分利用它们。

    我想知道是否有人提出建议,因为这似乎应该很容易。

    编辑:我认为这比仅使用多处理更为复杂。这个问题要问我要解决的问题,我想知道对于这种类型的问题,理想的解决方案是什么


    解决此问题的最佳方法似乎在很大程度上取决于正在使用的群集大小,环境等的容量。对我而言,最好的情况是使用MPI4py,它将隔离我的子流程调用,并在我的X个节点中使用它们(步骤2),并使我的头节点运行其余代码(步骤1)。