Может ли HDF5 надежно записываться и считываться одновременно отдельными процессами Python?

9

Я пишу сценарий для записи живых данных с течением времени в один файл HDF5, который включает весь мой набор данных для этого проекта. Я работаю с Python 3.6 и решил создать инструмент командной строки, используя clickдля сбора данных.

Меня беспокоит, что произойдет, если сценарий сбора данных записывает данные в файл HDF5, а еще не готовое приложение ML пытается прочитать данные из того же файла?

Я взглянул на документацию HDF Group о параллельном вводе / выводе HDF5 , но это не совсем прояснило для меня.

Басс
источник

Ответы:

10

Параллельный ввод / вывод HDF5 не решит эту проблему. Эта технология в первую очередь предназначена для повышения производительности, а не для предотвращения столкновений.

То, что вы хотите, это знать как SWMR (один писатель / несколько читателей) :

Системы сбора данных и компьютерного моделирования часто должны анализировать и визуализировать данные во время их записи. Например, нередки случаи, когда приложение выдает результаты в середине цикла, которые предполагают изменение некоторых основных параметров, настройку датчиков или выполнение цикла полностью.

Чтобы позволить пользователям проверять такие системы, мы разрабатываем параллельный шаблон доступа для чтения / записи к файлам, который мы называем SWMR (произносится как пловец). SWMR является сокращением от одного писателя / нескольких читателей. Функциональность SWMR позволяет процессу записи добавлять данные в файл, в то время как несколько процессов чтения читают из файла.

Впервые SWMR был включен в версию 1.10.0 HDF5, выпущенную 2016-03-30

Одновременный доступ к файлам HDF5 - Single Writer / Multple Reader (SWMR)

Функция Single Writer / Multiple Reader или SWMR позволяет пользователям читать данные одновременно во время записи. Связь между процессами и блокировка файлов не требуются. Процессы могут выполняться на одной или разных платформах, если они используют общую файловую систему, совместимую с POSIX.

Стивен Раух
источник