HDF5 può essere scritto e letto in modo affidabile simultaneamente da processi python separati?


9

Sto scrivendo uno script per registrare i dati live nel tempo in un singolo file HDF5 che include il mio intero set di dati per questo progetto. Sto lavorando con Python 3.6 e ho deciso di creare uno strumento da riga di comando utilizzando clickper raccogliere i dati.

La mia preoccupazione è che cosa accadrà se lo script di raccolta dei dati sta scrivendo nel file HDF5 e l'applicazione ML ancora in corso tenta di leggere i dati dallo stesso file?

Ho dato un'occhiata alla documentazione del gruppo HDF sull'I / O parallelo HDF5 , ma ciò non mi ha chiarito le cose.

Risposte:


10

L'I / O parallelo HDF5 non risolverà questo problema. Tale tecnologia è principalmente pensata per le prestazioni, non per evitare le collisioni.

Quello che vuoi è sapere come SWMR (autore singolo / lettore multiplo) :

I sistemi di acquisizione e modellizzazione dei dati spesso necessitano di analizzare e visualizzare i dati mentre vengono scritti. Non è insolito, ad esempio, che un'applicazione produca risultati nel mezzo di una corsa che suggerisca che alcuni parametri di base vengano cambiati, che i sensori vengano regolati o che la corsa venga completamente scartata.

Per consentire agli utenti di verificare tali sistemi, abbiamo sviluppato un modello di accesso ai file in lettura / scrittura che chiamiamo SWMR (pronunciato nuotatore). SWMR è l'abbreviazione di autore singolo / lettore multiplo. La funzionalità SWMR consente a un processo di scrittura di aggiungere dati a un file mentre più processi di lettura vengono letti dal file.

SWMR è stato incluso per la prima volta nella versione 1.10.0 di HDF5 rilasciata il 30-03-2016

Accesso simultaneo ai file HDF5 - Single Writer / Multple Reader (SWMR)

La funzionalità Single Writer / Multiple Reader o SWMR consente agli utenti di leggere i dati contemporaneamente mentre li scrivono. Non sono richieste comunicazioni tra i processi e il blocco dei file. I processi possono essere eseguiti sulla stessa piattaforma o su piattaforme diverse purché condividano un file system comune conforme a POSIX.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.