Kann HDF5 durch separate Python-Prozesse zuverlässig gleichzeitig beschrieben und gelesen werden?

9

Ich schreibe ein Skript, um Live-Daten im Laufe der Zeit in einer einzigen HDF5-Datei aufzuzeichnen, die meinen gesamten Datensatz für dieses Projekt enthält. Ich arbeite mit Python 3.6 und habe beschlossen, ein Befehlszeilentool clickzum Sammeln der Daten zu erstellen .

Ich mache mir Sorgen, was passiert, wenn das Datenerfassungsskript in die HDF5-Datei schreibt und die noch zu verwendende ML-Anwendung versucht, Daten aus derselben Datei zu lesen?

Ich habe mir die Dokumentation der HDF Group zu HDF5 Parallel I / O angesehen , aber das hat die Dinge für mich nicht wirklich geklärt.

basse
quelle

Antworten:

10

HDF5 Parallel I / O löst dieses Problem nicht. Diese Technologie ist in erster Linie für die Leistung gedacht, nicht für die Vermeidung von Kollisionen.

Was Sie wollen, ist als SWMR (Single-Writer / Multiple-Reader) bekannt :

Datenerfassungs- und Computermodellierungssysteme müssen Daten häufig während des Schreibens analysieren und visualisieren. Es ist beispielsweise nicht ungewöhnlich, dass eine Anwendung mitten in einem Lauf Ergebnisse liefert, die darauf hindeuten, dass einige grundlegende Parameter geändert, Sensoren angepasst oder der Lauf vollständig verschrottet wird.

Damit Benutzer solche Systeme überprüfen können, haben wir ein gleichzeitiges Lese- / Schreib-Dateizugriffsmuster entwickelt, das wir SWMR (ausgesprochener Schwimmer) nennen. SWMR ist die Abkürzung für Single-Writer / Multiple-Reader. Mit der SWMR-Funktionalität kann ein Schreibprozess einer Datei Daten hinzufügen, während mehrere Leseprozesse aus der Datei lesen.

SWMR wurde erstmals in HDF5 Version 1.10.0 aufgenommen, die am 30.03.2016 veröffentlicht wurde

Gleichzeitiger Zugriff auf HDF5-Dateien - Single Writer / Multple Reader (SWMR)

Mit der Funktion Single Writer / Multiple Reader oder SWMR können Benutzer Daten während des Schreibens gleichzeitig lesen. Kommunikation zwischen den Prozessen und Dateisperrung sind nicht erforderlich. Die Prozesse können auf derselben oder auf verschiedenen Plattformen ausgeführt werden, sofern sie ein gemeinsames Dateisystem verwenden, das POSIX-kompatibel ist.

Stephen Rauch
quelle