У меня есть программа на Python, которая принимает поток данных через UDP со скоростью + - 1000 Гц. Типичный стрим занимает + - 15 минут. Он состоит из + - 10 каналов, каждый из которых состоит из потока двойных, логических значений или вектора размера 3 с меткой времени.
В настоящее время каждая итерация (то есть 1000 раз в секунду) записывает строку в файл csv со всеми значениями.
Чтобы ограничить размер файлов, я хочу изменить формат на hdf5 и записать данные с помощью h5py.
Очень коротко, это должно выглядеть так:
class StoreData(threading.Thread):
def __init__(self):
super().__init__()
self.f = open_hdf5_file_as_write()
def run(self):
while True:
# return True every +- 0.001 seconds
if self.new_values_available():
vals = self.get_new_vals()
# What to do best with the vals here?
Но я натыкаюсь на 2 вопроса.
Какая лучшая структура файла HDF5? Лучше всего хранить потоки в разных группах или просто разные наборы данных в одной группе?
Как мне записать данные? Могу ли я на каждой итерации расширять наборы данных с помощью 1 переменной с помощью изменения размера? Должен ли я хранить данные локально и обновлять каждые n итераций фрагментом из n значений на поток, или я сохраняю все в таблице pandas и записываю ее только один раз в конце?
Ответ на 1 из 2 вопросов уже будет большим подспорьем!