尽快读取HDF5数据集

时间:2018-10-30 14:17:09

标签: python python-multiprocessing python-multithreading hdf5 h5py

我需要尽快从磁盘到内存读取非常大的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文件上使用多个阅读器的解决方法,或者是一种仍然可以使我更快地读取它的方法。谢谢

0 个答案:

没有答案