2014-03-13 58 views
5

我使用:最快的方式讀取包含numpy的陣列整體HDF5到存儲器

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()順序文件(要求什麼?)?)的

回答

5

PyTables(另一個Python HDF5庫)支持使用H5FD_CORE driver將整個文件加載到內存中。 h5py似乎也支持內存映射文件(請參見File Drivers)。所以只是做

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

和你做,因爲該文件,那麼已經駐留在內存中。