Helllo, Я хотел бы поделиться небольшими объемами данных (< 1K) между python и процессами. Данные представляют собой физические данные PC/104 IO, которые быстро и часто меняются (24x7x365). Будет один «сервер», записывающий данные и несколько клиентов, читающих его части. Система, в которой работает эта программа, использует флэш-память (CF-карту), а не жесткий диск, поэтому я беспокоюсь о том, чтобы вытащить флеш-память с помощью схемы на основе файлов. Я также хотел бы использовать меньше энергии (процессорное время), поскольку мы на 100% работаем на солнечной энергии.Как делиться данными между процессами python без записи на диск
- Действительно ли это волнует? Мы могли бы сменить CF-карту на SSD.
- Изменяет ли значение с помощью mmap физически записывает данные на диск или это виртуальный файл?
- Мы будем работать на Debian, поэтому, возможно, POSIX IPC для модуля python - лучшее решение. Кто-нибудь использовал его?
- Кто-нибудь пробовал модуль Python Object Sharing (POSH)? Это выглядит многообещающим с первого взгляда, но оно находится в «Альфе» и, похоже, не активно развивается.
Спасибо
UPDATE: Мы замедлили максимальную скорость обновления данных до примерно 10 Гц, но более типично 1 Гц. Клиенты будут уведомляться только в том случае, если значение изменяется, а не с постоянной скоростью обновления. Мы перешли к модели с несколькими серверами/несколькими клиентами, где каждый сервер специализируется на определенном типе инструмента или функции. С тех пор как выяснилось, что большая часть программирования должна была выполняться программистами Java, мы закончили использование JSON-RPC через TCP. Серверы будут написаны на Java, но я все же надеюсь написать основной клиент в Python и провести исследования JSON-RPC.
+1 для питона + солнечной энергии. Потрясающие. – gahooa
Можете ли вы прокомментировать, как часто изменяются данные и как часто нужно обновлять потребителей? Эта информация поможет выбрать наилучший подход. – gahooa
Некоторые значения данных могут меняться два раза в секунду, а некоторые - редко. Похоже, что некоторые из других процессов могут быть Java, поэтому подход сокетов выглядит лучше всего. Я думаю, что я попытаюсь что-то сделать, когда клиент (потребитель) регистрирует интерес к определенному значению (например, ток двигателя, статус коммутатора, скорость ветра и т. Д.), И сервер отправляет клиенту обновление при изменении значения. Клиент может также запросить изменение состояния для цифровых выходов. – RyanN