读取包含Numpy数组的整个HDF5文件到内存的最快方法

5

我使用:

import h5py

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

需要将整个HDF5文件(2 GB,1000个2 MB的numpy数组)读入内存中。

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

(也许这里的循环会在文件中执行大量的“移动”(寻找?),因为每个f[k]都没有按照能够给for k in f.iterkeys()提供顺序放置?)

1个回答

8

PyTables(另一个 Python HDF5 库)支持使用H5FD_CORE 驱动程序将整个文件加载到内存中。h5py 似乎也支持内存映射文件(请参阅文件驱动程序)。因此,只需执行以下操作:

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

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


内存映射文件是否意味着它已经加载到内存中? - spurra
1
一般来说,不会。但根据h5py的文档,所有操作都在内存中完成。 - Joe

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接