Как передать подмассивы многопроцессорным рабочим с помощью Starmap - PullRequest
0 голосов
/ 24 мая 2018

Я пытаюсь распараллелить обработку на массиве numpy.Я хотел бы разделить массив на подмассивы и отправить каждый массив своему многопроцессорному рабочему (число cpus-1).Следующий код работает хорошо, и каждый работник получает часть массива (индексы массива) в функции f:

pool.map_async(f, [slice(i, i + step) for i in range(start, stop, step)])

Я попробовал аналогичный подход с starmap_async, потому что мне нужно отправить больше параметров в функцию,Здесь список начальных и конечных пикселей подмассивов (матов) составлен в отдельном утверждении.Однако в этом случае активируется только один работник, и в него передается весь список (а не только первый элемент).

mats = [(i, i + part) for i in range(0, shp[1], part)]
pool.starmap_async(f, [(mats, 0.4, 0.9, shp, shp_o)])

Это функция функции starmap или я выполняю ее неправильно?Любые комментарии приветствуются.

...