Правильный способ использования мультипроцессора. Пул во вложенном цикле
Я использую модуль 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 ()» в конце каждого цикла во втором примере выше; какая польза от этого?
Спасибо!