2017-05-25 102 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