Многопроцессорная обработка - общая память с многомерным массивом Numpy - PullRequest
0 голосов
/ 10 мая 2018

Я нахожусь в ситуации, когда мне нужно параллельно обрабатывать очень большой массив numpy (55x117x256x256). Попытка передать его с помощью обычного многопроцессорного подхода дает ошибку AssertionError, что, как я понимаю, связано с тем, что массив слишком велик для копирования в каждый процесс. Из-за этого я хотел бы попробовать использовать разделяемую память с многопроцессорностью. (Я открыт для других подходов, если они не слишком сложны).

Я видел несколько вопросов, касающихся использования метода разделяемой памяти Python multiprocessing, например,

import numpy as np
import multiprocessing as mp

unsharedData = np.zeros((10,))
sharedData = mp.Array('d', unsharedData)

, которые, кажется, работают нормально. Однако я еще не видел пример, где это делается с многомерным массивом.

Я пытался просто вставить многомерный массив в mp.Array, что дает мне TypeError: only size-1 arrays can be converted to Python scalars.

unsharedData2 = np.zeros((10,10))
sharedData2 = mp.Array('d', unsharedData2)## Gives TypeError

Я могу сгладить массив, но я бы предпочел нет, если его можно избежать.

Есть ли какая-нибудь хитрость для получения многопроцессорного массива для обработки многомерных данных?

...