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