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

时间:2014-03-13 08:46:08

标签: python arrays numpy hdf5 h5py

我用:

import h5py

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

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

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

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

1 个答案:

答案 0 :(得分:6)

PyTables(另一个Python HDF5库)支持使用H5FD_CORE driver将整个文件加载到内存中。 h5py似乎也支持内存映射文件(参见File Drivers)。所以就这样做

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

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