Я пытаюсь ускорить процесс чтения фрагментов (загрузить их в оперативную память) из файла набора данных h5py. Прямо сейчас я пытаюсь сделать это через библиотеку многопроцессорности.
pool = mp.Pool(NUM_PROCESSES)
gen = pool.imap(loader, indices)
Где функция загрузчика выглядит примерно так:
def loader(indices):
with h5py.File("location", 'r') as dataset:
x = dataset["name"][indices]
Это на самом деле иногда работает (имеется в виду, что ожидаемое время загрузки делится на количество процессов и, таким образом, распараллеливается). Однако в большинстве случаев это не так, и время загрузки остается таким же высоким, как и при последовательной загрузке данных. Могу ли я что-нибудь сделать, чтобы исправить это? Я знаю, что h5py поддерживает параллельное чтение/запись через mpi4py, но я просто хотел бы знать, действительно ли это необходимо только для чтения.