私は、多くの独立した統合を含む計算を高速化しようとしています。これを行うために、私はPython Joblibとマルチプロセッシングを使用しています。今まで私は計算の内部ループを並列化することに成功しましたが、私は外部ループと同じことをしたいと思います。並列プログラミングは私の心を乱すので、誰かが私を助けることができるかどうか疑問に思っています。これまで私は持っています:
from joblib import Parallel, delayed
import multiprocessing
N = 10 # Some number
inputs = range(1,N,2)
num_cores = multiprocessing.cpu_count()
def processInput(n):
u_1 = lambda x,y: f(x,y)g(n,m) # Some function
Cn = scintegrate.nquad(u_1, [[A,B],[C,D]]) # A number
return Cn*F(x,y)*G(n,m)
resultsN = []
for m in range(1,N,2): # How can this be parallelized?
add = Parallel(n_jobs=num_cores)(delayed(processInput)(n) for n in inputs)
resultsN = add + resultsN
resultsN = sum(resultsN)
これまでのところ、正しい結果が得られました。今私は外側のループで同じことをしたいと思います。どのように私はこれを行うことができます誰も考えを持っていますか?
また、u_1宣言をprocessInputの外で行うことができるかどうか、また改善のための提案があれば幸いです。
ありがとうございました。