temples писал(а): ↑30 мар 2015, 10:35
Доброе утро!
Имеется массив данных, который надо сохранить в файл.
Вы не сообщили как дальше будут использоваться данные.
Если данные будут передаваться для анализа другими людьми - то данные с разделителями,
Если данные будут анализироваться в Labview то TDMS файл.
Если данные приходят много и быстро - то бинарный файл.
Следующий вопрос какие данные требуется сохранять. Последние или все поступающие.
С какой периодичностью поступают данные и как долго.
Если речь идет о 1000 значений в секунду разнородных данных по вашей задаче напрашивается база данных. Столбцы разных форматов. Либо разные таблицы.
Можно сохранять в виде кортежа (строки) - метка времени в виде unix time и значения разных форматов.
Можно в виде метка времени, ID значения (столбца), значение. При чтении придется собрать в таблицу.
До 1500 столбцов например PostgreSQL позволяет писать влоб одним кортежем.
В Producer Loop я собираю данные и помещаю в очередь
В цикле Consumer Loop данные сбрасываю в базу. Причем периодичность сбора 100 мс - 1 сек, а периодичность сброса 10 сек. Проверена запись 1000 значений х 100 мс х 4 таблицы. Фактически в работе меньше.
- Queue save.jpg (24.04 КБ) 2028 просмотров
Таким образом Вам нужно будет заботиться о форматировании один раз при создании таблицы.