【问题标题】:Fastest way to read a whole HDF5 containing Numpy arrays into memory将包含 Numpy 数组的整个 HDF5 读入内存的最快方法
【发布时间】:2014-04-17 20:57:13
【问题描述】:

我用:

import h5py

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

将整个 HDF5 文件读入内存(2 GB,1000 个 numpy 数组,每个 2 MB)

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

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

【问题讨论】:

    标签: python arrays numpy hdf5 h5py


    【解决方案1】:

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

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

    你就完成了,因为文件已经驻留在内存中。

    【讨论】:

    • 内存映射文件是否意味着它已加载到内存中?
    • @spurra 一般来说,没有。但是根据 h5py 的文档,所有的操作都是在内存中完成的。
    猜你喜欢
    • 1970-01-01
    • 2021-07-14
    • 2017-10-20
    • 1970-01-01
    • 2018-03-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多