Как прервать / выйти из функции паузы pyplots на клавиатурном прерывании - PullRequest
0 голосов
/ 12 февраля 2020

Я создал pyplot, который обновляется каждую минуту в соответствии с данными, которые он загружает онлайн. Поскольку новые данные доступны только каждую минуту, перед перезагрузкой следует подождать 60 секунд.

До того, как у меня был pyplot, я просто использовал time.sleep, который я мог выйти очень хорошо:

import time
try:
    while True:
       #do something
       time.sleep(60)
except KeyboardInterrupt:
   pass

Однако, time.sleep замораживает pyplot, поскольку согласно документации, которая требуется для графика, figure.canvas.start_event_loop(interval) чтобы отвечать на клики. Встроенная функция plt.pause() неявно делает это для всех текущих графиков.

Эта функция start_event_l oop, однако, блокирует поток и не реагирует на прерывания клавиатуры, поэтому следующее минимизированный пример не работает :

import matplotlib.pyplot as plt
try:
   while True:
      plt.plot([1,2,3],[4,5,6])
      plt.pause(60)
except KeyboardInterrupt: #You have to still click the red cross on the plot and do ctrl-C to close
   pass

Мой вопрос: как я могу заставить функцию plt.pause () прослушивать прерывания клавиатуры? Или, если это невозможно, как я могу приостановить выполнение моей программы таким образом, чтобы я мог выйти из нее и при этом использовать динамический сюжет c (zoom et et c)?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...