5

私が使う :

import h5py

f = h5py.File('myfile.h5', 'r')
d = {}
for k in f.iterkeys():
    d[k] = f[k][:]

HDF5 ファイル全体(2 GB、それぞれ 2 MB の 1000 個numpyの配列)をメモリに読み込みます。

HDF5 のすべてのコンテンツをメモリにロードするより高速な方法はありますか?

(おそらく、ここでのループは、ファイル内で多くの「移動」(シーク?) を実行します。これは、それぞれf[k]が与えられる順序で配置されていないためfor k in f.iterkeys()ですか?)

4

1 に答える 1

7

PyTables (別の Python HDF5 ライブラリ) は、H5FD_CORE ドライバーを使用したファイル全体のメモリへの読み込みをサポートしています。h5py は、メモリ マップされたファイルもサポートしているようです ( File Driversを参照)。だからただする

import h5py
f = h5py.File('myfile.h5', 'r', driver='core')

ファイルはすでにメモリに存在するため、これで完了です。

于 2014-03-13T08:49:02.090 に答える