h5py create_dataset 循环慢

h5py create_dataset loop slow

我正在尝试创建一个 hdf5 文件,其中每个数据集都是一个 90x18 numpy 数组。我希望为文件创建总计 2704332 个数据集,最终大小约为 40 GB。

with h5py.File('allDaysData.h5', 'w') as hf:
    for x in list:
        start = datetime.datetime.now()
        hf.create_dataset(x, data=currentData)
        end = datetime.datetime.now()
        print(end-start)

当 运行 这个 create_dataset 命令开始时不再需要 .0004 秒。一旦文件达到 6 GB 左右,它就会突然切换到每个数据集需要 0.08 秒。

hdf5 文件的数据集是否有某种限制?

在这个答案中,您可以看到 create_dataset 的性能随着迭代次数的增加而下降。由于 h5py 以特殊结构存储数据,我认为这是因为 h5py 需要更多时间来索引数据集。

有两种解决方法,一种是使用关键词libver='latest'。即使生成的文件与旧文件不兼容,它也会显着提高性能。第二个是将您的数组聚合成多个聚合。比如将每1024个数组聚合为一个