Постоянное хранение данных? - PullRequest
0 голосов
/ 22 апреля 2019

Мой вариант использования должен хранить данные на диске сразу же, как только они станут доступны. Я использую Raspberry PI и несколько лазеров. После того, как лазер активирован / деактивирован, берется временная метка, и она должна быть сохранена на диске. Данные хранятся только тогда, когда лазеры «вооружены». Они также могут находиться в состоянии «бездействия» (они все еще работают, но метки времени игнорируются). Кроме того, лазеры могут быть включены / выключены несколько раз.

Какой самый эффективный способ сделать это? Использование плоскости CSV / XML / TXT или что-то еще? Фактическая SD-карта, которая используется в RPI, ограничена 8 ГБ.

Другой вопрос, при использовании метода open(), должен ли я close() файл после того, как я выполнил метод write(), или я должен оставить его открытым, пока сам скрипт работает (скрипт работает все время, пока пользователь решает уйти)?

1 Ответ

0 голосов
/ 22 апреля 2019

Звучит как питон?

Если это так, вы можете написать в свой файл, используя with:

with open('/path', 'w') as f: f.write('stuff')

и дескриптор файла автоматически закроется, когда выполнение выйдет из блока.

Однако в отношении других ваших вопросов это зависит от вашего варианта использования. Почему он должен быть доступен немедленно? Будет ли это читать другой процесс? Как быстро это произойдет? Есть ли какие-либо другие биты данных, которые вам нужно сохранить вместе с отметкой времени - предположительно, включен ли лазер в это время?

Вероятно, хорошим решением для вас была бы облегченная база данных, такая как SQLite. Хранение на диске примерно такое же, как в «плоском» файле, таком как .txt или .csv, на который вы ссылаетесь. Это будет быстро. И это устраняет беспокойство об управлении фактическим письмом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...