将包含 Numpy 数组的整个 HDF5 读入内存的最快方法
Posted
技术标签:
【中文标题】将包含 Numpy 数组的整个 HDF5 读入内存的最快方法【英文标题】:Fastest way to read a whole HDF5 containing Numpy arrays into memory 【发布时间】: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()
的顺序放置?)
【问题讨论】:
【参考方案1】:PyTables(另一个 Python HDF5 库)支持使用 H5FD_CORE driver 将整个文件加载到内存中。 h5py 似乎也支持内存映射文件(参见File Drivers)。所以就做吧
import h5py
f = h5py.File('myfile.h5', 'r', driver='core')
你就完成了,因为文件已经驻留在内存中。
【讨论】:
内存映射文件是否意味着它已加载到内存中? @spurra 一般来说,没有。但是根据 h5py 的文档,所有的操作都是在内存中完成的。以上是关于将包含 Numpy 数组的整个 HDF5 读入内存的最快方法的主要内容,如果未能解决你的问题,请参考以下文章
将 HDF5 文件中的大型数据集读入 x_train 并在 keras 模型中使用
我可以通过索引访问 Parquet 文件而不将整个文件读入内存吗?