Медленный ввод и вывод - идеальное время для использования потоков и очередей в Python. У потоков есть свои ограничения, но это тот случай, когда они работают легко и эффективно.
Описание того, как это сделать:
Обычно графический интерфейс пользователя (например, окно matplotlib) должен находиться в основном потоке, поэтому сбор данных выполняется во втором потоке. В потоке данных проверьте, поступают ли новые данные (и если вы делаете это в каком-то бесконечном цикле опроса, вставьте короткий time.sleep, чтобы время от времени освобождать поток). Затем, при необходимости, сообщите основному потоку, что есть некоторые новые данные для обработки / отображения. Как именно это сделать, зависит от деталей вашей программы, вашего графического интерфейса и т. Д. Вы можете просто использовать флаг в потоке данных, который вы проверяете в основном потоке, или theading.Event, или, например, если у вас есть wx бэкэнд для matplotlib wx.CallAfter легко. Я рекомендую просмотреть одно из многих учебных пособий по многопоточности Python, чтобы понять его, а также многопоточность с помощью графического интерфейса пользователя, как правило, тоже имеет несколько проблем, так что просто сделайте быстрый поиск по потокам с вашим конкретным бэкэндом. Это звучит громоздко, поскольку я объясняю это так кратко, но на самом деле это довольно просто и мощно, и будет более плавным, чем, например, чтение и запись в один и тот же файл из разных процессов.