h5py 是否将整个文件读入内存?

问题描述 投票:0回答:2

h5py 是否将整个文件读入内存?

如果是这样,如果我有一个非常非常大的文件怎么办?

如果不是的话,每次要单个数据就从硬盘取数据会不会很慢?我怎样才能让它更快?

python h5py
2个回答
11
投票

h5py 是否将整个文件读入内存?

不,事实并非如此。特别是,切片 (

dataset[50:100]
) 允许您将数据集的一部分加载到内存中。有关详细信息,请参阅 h5py 文档

如果不是的话,每次要单个数据就从硬盘取数据会不会很慢?

总的来说,hdf5 速度非常快。但从内存读取显然比从磁盘读取要快。您可以决定将多少数据集读入内存(

dataset[:]
加载整个数据集)。

怎样才能让它更快?

如果您想优化性能,您应该阅读有关分块压缩部分。还有一本详细解释了这些事情(免责声明:我不是作者)。


0
投票

如果您需要将整个 HDF5 文件(可能是嵌套的)加载到内存中,这里有一个简单的实用函数:

def load_entire_hdf5(dct):
    if isinstance(dct, h5py.Dataset):
        return dct[()]
    ret = {}
    for k, v in dct.items():
        ret[k] = load_entire_hdf5(v)
    return ret

with h5py.File("<filepath>", "r") as f:
    data = load_entire_hdf5(f)
© www.soinside.com 2019 - 2024. All rights reserved.