Я создал 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)?