我正在尝试创建一个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文件的数据集是否存在某种限制?
答案 0 :(得分:2)
在这个答案中,您可以看到随着迭代次数的增加,create_dataset
的性能正在下降。由于h5py
以特殊结构存储数据,我认为这是因为h5py
需要更多时间来索引数据集。
有两种解决方案,一种是使用关键字libver='latest'
。即使生成的文件与旧文件不兼容,它也会显着提高性能。第二个是将数组聚合成几个聚合。例如,将每1024个数组聚合为一个。