писать и читать на pytables в реальном времени

Я не уверен, что то, о чем я думаю, возможно, мне понадобится помощь человека, имеющего опыт работы с HDF5/PyTables.

Эсценарий будет таким:

Допустим, у нас есть процесс, машина, соединение и т. д., которые собирают данные и сохраняют их в формате HDF5/PyTable. Я буду называть это магазином программного обеспечения.

Возможно ли иметь другое программное обеспечение, я бы назвал его аналитическим программным обеспечением, работающим вовремя?

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

Я сомневаюсь, что если программа хранилища записывает PyTable, mode='w', то в то же время может ли программа анализа получить доступ к mode='r' и прочитать некоторые данные для выполнения базового анализа, средних значений и т. д. и т. д.??

Основная идея этого заключается в том, чтобы иметь возможность анализировать данные, хранящиеся в PyTable, в режиме реального времени.

Конечно, любое другое предложенное решение будет оценено.


person codeKiller    schedule 27.02.2014    source источник


Ответы (2)


Не рекомендуется и не поддерживается запись в одном процессе и чтение в другом. Взгляните на этот вопрос из часто задаваемых вопросов по HDF 5:

Поддерживает ли HDF5 одновременный доступ к одному набору данных из нескольких процессов?

Если все процессы читают, то да, HDF5 (последовательный) это поддерживает. Если есть какие-то процессы, которые пишут, то нет, это не поддерживается. Мы работаем над функцией «Single Write Multiple Read» (SWMR), которая будет доступна в будущем выпуске (ожидается, что в HDF5-1.10).

Pytables не гарантирует эту схему записи/чтения, как указано @SmCaterpillar.

person Pedro Ghilardi    schedule 30.04.2014

Это определенно возможно. Это особенно просто, если у вас есть только один процесс в режиме «w» и несколько процессов в режиме «r». Просто убедитесь, что в вашем процессе 'w' время от времени flush() файл и/или наборы данных. Если вы сделаете это, процесс 'r' сможет увидеть данные.

person Anthony Scopatz    schedule 04.03.2014
comment
Вы уверены, что это хорошая идея? Часто задаваемые вопросы по PyTables: можно ли использовать PyTable в сценариях параллельного доступа? Параллельное чтение вообще не проблема. Однако всякий раз, когда процесс (или поток) пытается писать, начинают появляться проблемы. Во-первых, PyTables не поддерживает блокировку на любом уровне, поэтому несколько процессов, одновременно записывающих один и тот же файл PyTables, вероятно, приведут к его повреждению, поэтому не делайте этого! Даже если один процесс пишет, а другие читают, это неприятная вещь, потому что процессы чтения могут считывать неполные данные из параллельной операции записи данных. - person SmCaterpillar; 06.03.2014
comment
Запись заблокирована в HDF5, насколько я помню, поэтому это нормально. - person Anthony Scopatz; 06.03.2014