Хабрахабр

Неблокирующая отрисовка и обновление графиков с помощью bokeh

Можно использовать matplotlib в неблокинующем режиме, вручную дёргая plt.draw() на каждой итерации. Правда, собственной обработки сообщений от GUI в неблокирующем режиме у matplotlib нету, и если окошко свёрнётся или закроется другим окном, то надо ждать следующей итерации, чтобы его перерисовали. Так себе костыль, но для отладки сойдёт.

Тоже лютый костыль, но на безрыбьи и сойдёт. Можно по-негритянски генерировать картинку с графиком тем же matplotlib и дампить на диск. Или на удалённой машине без графики.

Правда, на быстрое решение для отладки это слабо похоже, да и Qt учить надо, но я такое пару раз делал. Можно сделать и по-крутому: воспользоваться PyQt, завернуть расчётный код в QObject, задвинуть его в отдельный поток, завернуть matplotlib-графики в QWidget (или воспользоваться графиками из Qt Data Visualizaion, или из PyQtGraph), соединить математику с графикой через сигнал со слотом, и будет счастье.

Когда-то я делал и такое, но на быстрое-решение-для-отладки это тоже не тянуло. Можно поднять в отдельным процессом маааленькое серверное приложение для отрисовки графиков (например, с помощью aiohttp + PyQt + PyQtGraph), к которому стучаться через REST API из главного процесса.

Правда, нужно ставить и БД, и Grafan’у, настраивать их, и вообще заморачиваться записью в БД. Можно писать в какую-нибудь БД (что там у нас сейчас в моде?), а потом напускать на это модную же Grafan’у. Через файл, наверно, тоже можно, но для двух графиков на тыщу точек каждый — это как из пушки по воробьям…

Этого я уже не осилил, хотя и надо бы.
Или можно разбираться в plotly.dash, выносить математику в отдельный поток, заворачивать в dash-приложение, и делать ещё чёртову уйму всякой фигни.

Теги
Показать больше

Похожие статьи

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Кнопка «Наверх»
Закрыть