Как использовать разделяемую память с модулем Concurrent? - PullRequest
0 голосов
/ 10 января 2020

Я использую параллельный модуль для распараллеливания функции, но он медленный.

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...