LINUX.ORG.RU

Python: чем в 2019 году модно графики рисовать, чтобы исполнение не блокировалось?

 , ,


1

2

Джентельмены!

Есть у меня Python-скрипт, моделирующий LTE-канал. И нужно мне на каждой итерации (примерно раз в минуту) отрисовывать график текущей пропускной способности.

При этом не просто отрисовывать график, а так, чтобы не блокировать исполнение собственно расчётного кода. И при этом чтобы окошко с графиком реагировало на изменение размеров окна, сворачивание-разворачивание и иже с ним (то бишь, чтобы у него работала очередь сообщений от GUI).

Классический способ сделать такое – завести QApplication, встроить туда matplotlib-канвас, вынести исполнение расчётного кода в отдельный QThread, обернуть его в QObject и заставить пересылать данные с помощью сигналов в поток с гуями. Но что-то мне подсказывает, что в 2019 году есть способы попроще.

Что присоветуете?



Последнее исправление: Yak (всего исправлений: 1)

в 2019 году принято на python писать сырые данные в какую-либо Time-Series DataBase ( prometheus или influxdb )

Оттуда их заберёт grafana и покажет ползователю красивый график в dashboard’е

router ★★★★★
()

Но что-то мне подсказывает, что в 2019 году есть способы попроще.

Да, QML.

RazrFalcon ★★★★★
()
Ответ на: комментарий от router

Я ни разу не против отрисовки графиков в браузере. И даже не против Grafan’ы, однако есть две тонких тонкости:

  1. нужно, чтобы данные в браузере автоматически обновлялись по вызову из Python’а (каждый раз, как у меня посчитается очередная итерация);

  2. объём данных копеечный, и разворачивать под них специальную базу данных (и, тем паче, что-то скидывать на жёсткий диск) крайне неохота.

Yak
() автор топика

Как вариант, выкинуть эту задачу в отдельный процесс, и слать ему через IPC любой по вкусу, да хоть тот же ZerocICE.

I-Love-Microsoft ★★★★★
()

не блокировать исполнение собственно расчётного кода

в отдельный тред запихни. это же не C - что за проблемы..

anonymous
()
Ответ на: комментарий от anonymous

проблема в том, что это питон. Нити в питоне как раз блокируются.

zad1ra
()

в 2019 году есть способы попроще

Отож. Просто переписываешь на електроне и юзаешь веб-воркеры.

anonymous
()
Ответ на: комментарий от anonymous

Отож. Просто переписываешь на електроне и юзаешь веб-воркеры.

Сорта говна. На питоне тоже есть multiprocessing.

byko3y ★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.