Я нахожусь в ситуации, когда мне нужно параллельно обрабатывать очень большой массив 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
Я могу сгладить массив, но я бы предпочел нет, если его можно избежать.
Есть ли какая-нибудь хитрость для получения многопроцессорного массива для обработки многомерных данных?