使用 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=',')
这个问题可能很简单,但我还没有找到我的问题的直接答案。
我有一个用 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=',')