Читайте в наборе данных HDF5 как можно быстрее - PullRequest
0 голосов
/ 30 октября 2018

Мне нужно прочитать очень большой файл H5 с диска в память как можно быстрее.

В настоящее время я пытаюсь прочитать его, используя несколько потоков через многопроцессорную библиотеку, но продолжаю получать ошибки, связанные с тем, что файлы H5 не могут быть прочитаны одновременно.

Вот небольшой фрагмент, демонстрирующий подход, который я использую:

import multiprocessing
import h5py
import numpy

f = h5py.File('/path/to/dataset.h5', 'r')

data = f['/Internal/Path/Dataset'] # this is just to get how big axis 0 is
dataset = numpy.zeros((300, 720, 1280)) # what to read the data into

def process_wrapper(frameCounter):
    dataset[frameCounter] = f['/Internal/Path/Dataset']

#init objects
cores = multiprocessing.cpu_count()
pool = multiprocessing.Pool(cores)
jobs = []

#create jobs
frameCounter = 0
for frame in range(0, data.shape[0]): # iterate through axis 0 of data
    jobs.append( pool.apply_async(process_wrapper,([frameCounter])) )
    frameCounter += 1

#wait for all jobs to finish
for job in jobs:
    job.get()

#clean up
pool.close()

Я ищу или обходной путь, который позволит мне использовать несколько считывателей в файле H5, или другой подход, который все же позволил бы мне читать его быстрее. Спасибо

...