O HDF5 pode ser gravado e lido de maneira confiável simultaneamente por processos python separados?

9

Estou escrevendo um script para gravar dados ao vivo ao longo do tempo em um único arquivo HDF5 que inclui todo o meu conjunto de dados para este projeto. Estou trabalhando com o Python 3.6 e decidi criar uma ferramenta de linha de comando usando clickpara coletar os dados.

Minha preocupação é o que acontecerá se o script de coleta de dados estiver gravando no arquivo HDF5 e o futuro aplicativo ML tentar ler dados do mesmo arquivo?

Dei uma olhada na documentação do The HDF Group sobre E / S paralela ao HDF5 , mas isso não esclareceu as coisas para mim.

basse
fonte

Respostas:

10

A E / S paralela do HDF5 não resolverá esse problema. Essa tecnologia se destina principalmente ao desempenho, não à prevenção de colisões.

O que você deseja é conhecido como SWMR (leitor único / leitor múltiplo) :

Os sistemas de aquisição de dados e de modelagem de computadores geralmente precisam analisar e visualizar dados enquanto estão sendo gravados. Não é incomum, por exemplo, uma aplicação produzir resultados no meio de uma execução que sugira que alguns parâmetros básicos sejam alterados, sensores sejam ajustados ou que a execução seja descartada completamente.

Para permitir que os usuários verifiquem esses sistemas, desenvolvemos um padrão simultâneo de acesso a arquivos de leitura / gravação que denominamos SWMR (nadador pronunciado). SWMR é a abreviação de single-writer / multiple-reader. A funcionalidade SWMR permite que um processo de gravação adicione dados a um arquivo, enquanto vários processos de leitura leem do arquivo.

O SWMR foi incluído pela primeira vez na versão 1.10.0 do HDF5 lançada em 30-03-2016

Acesso simultâneo a arquivos HDF5 - gravador único / leitor múltiplo (SWMR)

O recurso Single Writer / Multiple Reader ou SWMR permite que os usuários leiam dados simultaneamente enquanto os escrevem. As comunicações entre os processos e o bloqueio de arquivos não são necessárias. Os processos podem ser executados na mesma plataforma ou em plataformas diferentes, desde que compartilhem um sistema de arquivos comum compatível com POSIX.

Stephen Rauch
fonte