Правильный способ использования мультипроцессора. Пул во вложенном цикле

Я использую модуль multiprocessor.Pool () для ускорениясмущающе параллельно петля. У меня на самом деле есть вложенный цикл, и я использую multiprocessor.Pool для ускорения внутреннего цикла. Например, без распараллеливания цикла мой код будет выглядеть следующим образом:

outer_array=[random_array1]
inner_array=[random_array2]
output=[empty_array]    

for i in outer_array:
    for j in inner_array:
        output[j][i]=full_func(j,i)

С распараллеливанием:

import multiprocessing
from functools import partial

outer_array=[random_array1]
inner_array=[random_array2]
output=[empty_array]    

for i in outer_array:
    partial_func=partial(full_func,arg=i)     
    pool=multiprocessing.Pool() 
    output[:][i]=pool.map(partial_func,inner_array)
    pool.close()

Мой главный вопрос, если это правильно, и я должен включить multiprocessing.Pool () внутри цикла, или если вместо этого я должен создать пул вне цикла, т.е.

pool=multiprocessing.Pool() 
for i in outer_array:
     partial_func=partial(full_func,arg=i)     
     output[:][i]=pool.map(partial_func,inner_array)

Кроме того, я не уверен, должен ли я включить строку "pool.close ()» в конце каждого цикла во втором примере выше; какая польза от этого?

Спасибо!

Ответы на вопрос(3)

Ваш ответ на вопрос