Добрый деньДвойной параллельный цикл с Python Joblib
Я пытаюсь ускорить вычисление, которое включает в себя множество независимых интеграций. Для этого я использую pythons 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 вне процесса ввода, и любые другие предложения по улучшению будут оценены.
Спасибо за любые ответы.