現在、pytables を使用して多くの hdf ファイルに格納されている数 TB の画像データがあり、フレームごとに 1 つのファイルがあります。1 つのファイルに「LabelData」と「SensorData」の 2 つのグループが含まれます。
すべてのファイル名といくつかのメタデータを含む単一の (小さな) ファイルを作成しました。そのファイルを使用して、Python ジェネレーターで必要な hdf データを呼び出して開くことができます。
これにより多くの柔軟性が得られますが、すべてのファイルを開いたり閉じたりする必要があるため、かなり遅いようです。
今、他のファイルへの外部リンクを含む単一の hdf ファイルを作成したかったのですが、プロセスが高速化されますか?
私が理解しているように、外部リンクを作成するには、リンクごとにノードを作成する必要があります。ただし、次のパフォーマンス警告が表示されます。
PerformanceWarning: グループ
/
は、推奨される子の最大数 (16384) を超えています。PyTable が大量 のメモリを要求し、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()
より良い方法はありますか?