使用 mpi4py 在 python 中并行化 for 循环

Parallelizing for loop in python using mpi4py

这个问题可能很简单,但我还没有找到我的问题的直接答案。

我有一个用 Python 3.6 编码的 for 循环,我想将它并行化。它是这样的:

# Main file
import scipy
a=1
b=2   # ... some parameters defined
for i in range (10):
    (ans_1,ans_2) = f(a,b,i)

# Function file
def f(x,y,j):
    c = a+b    # Some calculations
    scipy.savetxt("data.csv",delimiter=',')    # Saving required variables

如何使用 Python 3.6 中的 mpi4py 模块并行化主文件中的 for 循环?例如,我想像我们在 Matlab 中使用的那样指定处理器的数量:parfor(20) 并在循环中键入 parfor 而不是 for。请帮助我!

为什么需要 MPI? ,我建议使用像 joblib 这样的东西...... https://pythonhosted.org/joblib/parallel.html

在你的情况下,类似于

from joblib import Parallel, delayed
# parallel on 20 cores:
Parallel(n_jobs=20)(delayed(f)((a,b,i)) for i in range(10))
# Function file
def f(params):
    x,y,j = params
    c = a+b    # Some calculations
    scipy.savetxt("data.csv",delimiter=',')