Я использую параллельный модуль для распараллеливания функции, но он медленный.
with concurrent.futures.ThreadPoolExecutor() as executor:
images = executor.map(gen_images, paths)
Можно ли использовать общую память для ускорения этого? Массивы, возвращаемые функцией, являются numpy массивами.
РЕДАКТИРОВАТЬ: Функция распараллеливания заключается в следующем: функция включает в себя как чтение, так и обработку. Но способ больше обработки, чем чтение. Итак, я бы сказал, что это связано с процессором
def gen_images(heads):
N = len(heads)
# we will be taking 34 slices from the head
images = np.zeros((N * 34, 328, 286), dtype='uint8')
counter = 0
for i in tqdm(heads):
name = i
# reading the associated head
insert_path = os.path.join(name, 'insertion_metadata.txt')
model_path = glob(os.path.join(name, 'head', '*' + '.dat'))[0]
data_, specs_, insertion_ = read_head(model_path, insert_path)
for z in range(-17, 17):
images[counter ,: ,:] = plot_slice(data_, specs_, insertion_, return_image = True, z_slice=z)
counter += 1
return images