5 Stimmen

Schnellster Weg, um ein gesamtes HDF5 mit Numpy-Arrays in den Speicher zu laden

Ich benutze :

import h5py

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

um die gesamte HDF5-Datei (2 GB, 1000 numpy-Arrays von jeweils 2 MB) in den Speicher zu laden.

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

(Vielleicht macht die Schleife hier viele "Bewegungen" (seek?) in der Datei, weil jedes f[k] nicht in der Reihenfolge platziert ist, die for k in f.iterkeys() ergibt?)

8voto

Joe Punkte 6157

PyTables (eine weitere Python HDF5-Bibliothek) unterstützt das Laden der gesamten Datei in den Speicher unter Verwendung des H5FD_CORE-Treibers. Auch h5py scheint den Zugriff auf dateiüberlagerten Speicher zu unterstützen (siehe Datei-Treiber). Also einfach

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

und du bist fertig, da die Datei dann bereits im Speicher vorhanden ist.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X