使用h5py读取hdf5文件会随着时间的推移而减慢

时间:2017-10-02 22:08:51

标签: python hdf5 h5py hdf

我有一个形状为80000 * 401408的hdf5文件。我需要以64的批量读取数据,但索引可以随机说(5,0,121,..,2)。

问题在于,虽然最初的读取非常一致,并且批次需要0.5秒才能完成,但一段时间后,一些批次需要更长时间达10秒,而某些批次仍在快速读取。我观察到越来越多的读取发生,阅读过程正在放缓。

hf = h5py.File( conv_file,'r')
conv_features = hf['conv_features']
while True:
    conv_batch = [None for i in range(64)]
    for i in range(0, 64):
        conv_batch[count] = np.reshape(conv_features[some_random_index], [14, 14, 2048] )
    # time for each of the above reads for conv_bacth is different.. varies from 0.5 to 5 seconds.. and slows down over time.

我没有使用块

1 个答案:

答案 0 :(得分:0)

您是否尝试过使用数据集控制块大小。将块大小设置为合理且经常访问的部分。

例如,如果您通常每行访问80000 * 401408数据, 如果块是(1,401408)或也许有效地读取了块 (1,200704)。

根据您的访问方式,块大小会极大地影响访问时间。您还可以考虑使用压缩。