Как загрузить много файлов .npy очень быстро - PullRequest
1 голос
/ 15 марта 2019

Мне нужно загрузить много файлов .npy в память. Каждый из файлов содержит массив numpy и имеет размер около 3-6 МБ.

Я уже могу загружать эти файлы параллельно, используя numpy.load, но, на мой взгляд, это все равно занимает слишком много времени.

Пример кода:

import threading 
import numpy as np

def load_chunk(ch, idx, results):           
    # ch is a chunk of filenames to load
    ars = []
    for fn in ch:
        ars.append(np.load(fn))
    results[idx] = ars

threads = [None] * len(fn_ch)
all_results = [None] * len(fn_ch)

for i in range(len(fn_ch)):
    t = threading.Thread(target=load_chunk, args=(fn_ch[i], i, all_results))
    t.start()
    threads[i] = t

[t.join() for t in threads]

Нет узких мест в инфраструктуре. При выполнении кода процессор и доступные дисковые IOPS вообще не используются.

Рабочая нагрузка распределена по 40 потокам - увеличение этого числа до 80 или уменьшение до 20 не влияет на время загрузки.

Есть ли способ ускорить процесс?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...