2017-05-25 181 views
0

这个问题可能是微不足道的,但我还没有找到直接的答案来解决我的问题。使用mpi4py并行化python循环

我有一个用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 

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

回答

-2

为什么你需要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=',') 
+0

感谢@Hilman。但是超级计算机中只有mpi4py可用于我的计算。对此有何帮助? – Vembha

+0

我可不写'def f(x,y,j):'?什么是def f(params):'做什么? – Vembha