将包含Numpy数组的整个HDF5读入内存的最快方法

Bas*_*asj 5 python arrays numpy hdf5 h5py

我用 :

import h5py

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

将整个HDF5文件读入内存(2 GB,1000个numpy阵列,每个2 MB).

有没有更快的方法将HDF5的所有内容加载到内存中?

(也许这里的循环在文件中做了很多"移动"(搜索?),因为每个f[k]都没有按照给出的顺序放置for k in f.iterkeys()?)

Joe*_*Joe 6

PyTables(另一个Python HDF5库)支持使用H5FD_CORE驱动程序将整个文件加载到内存.h5py似乎也支持内存映射文件(请参阅文件驱动程序).所以就这么做

import h5py
f = h5py.File('myfile.h5', 'r', driver='core')
Run Code Online (Sandbox Code Playgroud)

然后你就完成了,因为文件已经存在于内存中.