h5py create_dataset循环缓慢

时间:2017-12-05 00:35:49

标签: python numpy hdf5 h5py

我正在尝试创建一个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文件的数据集是否存在某种限制?

1 个答案:

答案 0 :(得分:2)

There is a related answer.

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

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