Я пытаюсь распараллелить следующий фильтр, используя модуль bottleneck
python 3. У меня есть массив numpy
, и я хочу разбить массив на сегменты по столбцам и обработать их одновременно, чтобы, как мы надеемся, добиться меньшего времени вычислений по сравнению с его сериализованной версией.
Я попытался распараллелить, используя multiprocessing
модуль. Мне нужна помощь, чтобы иметь возможность предоставить столбцы-сегменты массива, а также другие параметры для функции bottleneck.move_median()
. Я разделил массив на 3 сегмента следующим образом:
input = np.random.rand(240,40*3)
nCols = int(input.shape[1]/3)
((input[:,i*nCols:(i+1)*nCols)] for i in range(3))
Как я могу предоставить именованные аргументы от move_median()
до map()
?
import numpy as np
import bottleneck as bn
from multiprocessing import Pool
input = np.random.rand(240,40*3)
# Serialized computation
inputFiltered = bn.move_median(input, window=181, axis=0)
# My version of parallelizing move_median
p = Pool(3)
nCols = int(input.shape[1]/3)
inputFiltered = p.map( bn.move_median, \
((input[:,i*nCols:(i+1)*nCols)] for i in range(3)), window=181, axis=0))