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个数组聚合为一个
我正在尝试创建一个 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个数组聚合为一个