使用多处理读取HDF5文件非常慢

时间:2018-05-31 17:49:33

标签: python multiprocessing hdf5

我正在训练一个神经网络,其数据太大而无法存储在内存中。我已经将数据分成HDF5格式的块,并且一次一个地读取它们,并将它们变成一个生成器,然后我将其作为神经网络的输入。我注意到读取数据块也是一个瓶颈,为了加快速度,网络正在训练一大块数据,我试图用另一个进程读取下一块数据。我读取数据的功能如下:

import h5py 
def get_data(filename):
    current_file = h5py.File(filename, 'r')
    images = current_file['images'].value 
    coords = current_file['coords'].value
    current_file.close()
    return images, coords

当我直接应用这个函数时,它工作正常,并在大约45秒后读取数据:

import time 
start = time()
images, coords = get_data('Single-Cell-Image-Chunks/0.hdf5')
print(time() - start)

然而,当我尝试使用多处理工作程序时,它在10分钟后没有完成,我杀了它:

import time
from multiprocessing import Pool
start = time()
pool = Pool(1)
res = pool.apply_async(get_data, ('Single-Cell-Image-Chunks/0.hdf5',))
images, coords = res.get()
print(time() - start)

0 个答案:

没有答案