HDF5 peut-il être écrit et lu de manière fiable simultanément par des processus python distincts?

9

J'écris un script pour enregistrer des données en direct au fil du temps dans un seul fichier HDF5 qui comprend l'ensemble de mes données pour ce projet. Je travaille avec Python 3.6 et j'ai décidé de créer un outil de ligne de commande à l'aide clickde la collecte des données.

Ma préoccupation est ce qui se passera si le script de collecte de données écrit dans le fichier HDF5 et que l'application ML à venir essaie de lire les données du même fichier?

J'ai jeté un œil à la documentation du Groupe HDF sur les E / S parallèles HDF5 , mais cela n'a pas vraiment clarifié les choses pour moi.

basse
la source

Réponses:

10

Les E / S parallèles HDF5 ne résoudront pas ce problème. Cette technologie est principalement destinée aux performances et non à la prévention des collisions.

Ce que vous voulez, c'est savoir SWMR (single-writer / multiple-reader) :

Les systèmes d'acquisition de données et de modélisation informatique ont souvent besoin d'analyser et de visualiser les données pendant leur écriture. Il n'est pas rare, par exemple, qu'une application produise des résultats au milieu d'une analyse qui suggèrent que certains paramètres de base soient modifiés, que les capteurs soient ajustés ou que l'analyse soit entièrement mise au rebut.

Pour permettre aux utilisateurs de vérifier ces systèmes, nous avons développé un modèle d'accès simultané aux fichiers en lecture / écriture que nous appelons SWMR (nageur prononcé). SWMR est l'abréviation de single-writer / multiple-reader. La fonctionnalité SWMR permet à un processus d'écriture d'ajouter des données à un fichier tandis que plusieurs processus de lecture lisent le fichier.

SWMR a été inclus pour la première fois dans HDF5 version 1.10.0 publiée le 2016-03-30

Accès simultané aux fichiers HDF5 - Single Writer / Multple Reader (SWMR)

La fonction Single Writer / Multiple Reader ou SWMR permet aux utilisateurs de lire les données simultanément tout en les écrivant. Les communications entre les processus et le verrouillage des fichiers ne sont pas nécessaires. Les processus peuvent s'exécuter sur la même plate-forme ou sur différentes plates-formes tant qu'ils partagent un système de fichiers commun conforme à POSIX.

Stephen Rauch
la source