Для минимального примера я сделал простую диаграмму рассеяния. случайных значений с меняющимся заголовком. Изначально сюжет обновляется плавно первые несколько кадров, но быстро начинает тормозить или даже вовсе зависать. Я обнаружил странный обходной путь: спам-нажатие на фигуру приводит к тому, что обновления выполняются более последовательно, примерно каждую секунду.
Мне интересно, есть ли способ «имитировать» этот спам -щелчок или отправка какого-либо события, чтобы заставить Colab обновить фигуру более надежно, не требуя прямого взаимодействия с пользователем. Пока что я не нашел ничего, что работало бы хорошо.
Я открыт для любых предложений, даже хакерских обходных путей, если они помогают поддерживать актуальность обновлений сюжета и не позволяют Colab "отложить сюжет."

https://colab.research.google.com/drive ... sp=sharing
%pip install ipympl
from google.colab import output
output.enable_custom_widget_manager()
%matplotlib ipympl
import matplotlib.pyplot as plt
import numpy as np
import threading
import time
figure, ax = plt.subplots()
line = ax.plot([],[], 'o')
ax.set_xlim(0,100)
ax.set_ylim(0,1)
figure._canvas_callbacks._signals += ["fake_event"]
def wtf_event(*args,**kwargs):
print(flush=True, end="")
# print(args,kwargs)
figure.canvas.mpl_connect('fake_event', wtf_event)
def work1(figure,ax,line):
total = 100
for i in range(total):
X,Y = np.arange(100), np.random.rand(100) # data
figure.suptitle(i) # update title
line[0].set_data(X, Y) # update plot
figure.canvas.flush_events()
# figure.canvas.draw() # causes issues, if the delay is too long doesn't draw at all
figure.canvas.draw_idle()
# plt.pause(0.2) # throws errors
time.sleep(0.2) # actual display can take from instantly to 30 seconds (or more) in colab,
# colab also required cell to be "actively in focus" to update, repeatedly clicking on the plot "helps" it update (about 1 second)
figure.canvas.callbacks.process("fake_event")
thread = threading.Thread(target=work1, args=(figure,ax,line))
thread.start()
Подробнее здесь: https://stackoverflow.com/questions/790 ... thout-user