2014-03-13 8 views
5

I verwenden zum:schnellste Weg, um eine ganze HDF5 enthält Numpy Arrays in den Speicher

import h5py 

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

in den Speicher zu lesen, die gesamte Datei HDF5 (2 GB 1000 numpy Arrays von 2 MB pro Stück).

Gibt es eine schnellere Möglichkeit, den gesamten Inhalt des HDF5 in den Speicher zu laden?

(Vielleicht hier die Schleife macht eine Menge von "move" (suchen?) In der Datei, da jeder f[k] in der Auftrag nicht erteilt werden, die for k in f.iterkeys() geben werden?)

Antwort

5

PyTables (eine andere Python HDF5 Library) unterstützt das Laden der gesamten Datei in den Speicher unter Verwendung der H5FD_CORE driver. h5py scheint auch Speicherkarten zu unterstützen (siehe File Drivers). Also tun Sie einfach

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

und Sie sind fertig, wie die Datei dann bereits im Speicher residiert.