Чи можна HDF5 надійно записувати та читати одночасно окремими процесами python?


9

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

Мене хвилює те, що станеться, якщо сценарій збору даних запишеться у файл HDF5, і програма, яка ще не була ML, намагається прочитати дані з того самого файлу?

Я переглянув документацію групи HDF про паралельний введення / виведення HDF5 , але це не дуже зрозуміло для мене.

Відповіді:


10

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

Що ви хочете, це знати як SWMR (одноразовий / кілька читацький) :

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

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

SWMR вперше був включений до версії 1.10.0 HDF5, випущеної 30.03.2016

Одночасний доступ до файлів HDF5 - одноканальний записуючий / численні читання (SWMR)

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

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.