Я специалист по данным с многолетним опытом работы с Python, но не являюсь профессиональным разработчиком.
Я хочу создать приложение, которое:
- отображает интерактивную спутниковую карту с видом сверху (например, встроенную в Google Earth).
- может добавлять разные фигуры поверх него, такие как зеленые точки, обозначают датчики, которые физически развернуты в реальном мире по заданным координатам GPS.
- непрерывно прослушивает сообщения, отправленные этими датчиками (до 30) посредством многоадресной рассылки. Каждый датчик каждые 200 мс отправляет сообщение, содержащее данные измерений, независимо от другого (они не отправляют одновременно).
- обрабатывает эти сообщения (выполняет некоторые вычисления на основе содержимого сообщений).
- Обновляет фигуры на карте (например, меняя маркеры датчиков с зеленого на красный в зависимости от содержания сообщений, полученных от этих датчиков).
- слушать бесконечно или до закрытия.
- иметь возможность запуска локально и даже без Интернета (желательно).
- не требует сотрудничества между несколькими пользователями.
- уметь интегрировать такие функции, как добавление маркера на карту одним щелчком мыши, повторную визуализацию последних 24 часов, и т. д... (в основном я хочу добавить кнопки и раскрывающиеся меню).
- Я в основном знаком с Python.
- Я открыт для любых предложений по другим языкам.
Я уже создал сценарий, который успешно прослушивает и обрабатывает сообщения с помощью Python и Асинчио. Мои функции прослушивания и обработки были асинхронными функциями, а прослушивающая функция анализировала сообщения и добавляла их в очередь, которая использовалась функцией обработки.
Я хочу использовать asyncio, поскольку считал, что это лучшая парадигма, поскольку моя функция обработки не занимает много времени, и я в основном ждал прибытия сообщений, поэтому это больше проблема, связанная с вводом-выводом.
Кроме того, мне удалось закодировать первую версию моего приложения с помощью PySide6 для создания графического интерфейса и объект QWebEngineView, который отображает карту с некоторыми функциями Javascript и Leaflet (извините, если это неясно, поскольку я не являюсь экспертом ни в PySide, ни в Javascript). Это работает очень хорошо.
Затем я попытался интегрировать свой фрагмент кода asyncio и мое недавно созданное приложение PySide. Но я изо всех сил пытаюсь интегрировать оба цикла событий. Я слышал о Qasync, но не нашел достаточно близких примеров, чтобы адаптироваться к моему варианту использования.
Мои вопросы:
- Вы видите что-то неправильное в этом подходе (PySide + Asyncio + Leaflet + Javascript)?
- Вы бы порекомендовали другой подход и/или технический стек? Пожалуйста, не стесняйтесь указывать любые другие языки и платформы.
- Для этого варианта использования, когда максимум 30 датчиков отправляют сообщения в многоадресной рассылке каждые 200 мс, и обработка, которая не требует слишком много времени (небольшое количество вычислений + обновление фигур на карте), является ли асинхронность подходящим вариантом? Сообщения не отправляются каждым датчиком одновременно.
Подробнее здесь: https://stackoverflow.com/questions/798 ... updates-sh
Мобильная версия