我有几 TB 的图像数据,目前存储在许多带有 pytables 的 hdf 文件中,每一帧都有一个文件。一个文件包含两组,“LabelData”和“SensorData”。
我创建了一个包含所有文件名和一些元数据的单个(小)文件,在该文件的帮助下,我可以在 python 生成器中调用和打开任何需要的 hdf-data。
这给了我很大的灵活性,但是,它似乎很慢,因为每个文件都必须打开和关闭。
现在我想创建一个带有指向其他文件的外部链接的单个 hdf 文件,这会加快进程吗?
据我了解,创建外部链接需要为每个链接创建一个节点。但是,我收到以下性能警告:
PerformanceWarning:组
/
超过了建议的最大孩子数(16384);准备好看到 PyTables 需要大量 内存并且可能会降低 I/O。性能警告)
这就是我创建文件的方式:
import tables as tb
def createLinkFile(linkfile,filenames, linknames):
# Create a new file
f1 = tb.open_file(linkfile, 'w')
for filepath, linkname in zip(filenames,linknames):
data = f1.create_group('/', linkname)
# create an external link
f1.create_external_link(data, 'LabelData', filepath + ':/LabelData')
f1.create_external_link(data, 'SensorData', filepath + ':/SensorData')
f1.close()
有没有更好的办法?