有时,我会对循环中的情节进行实时更新。通常情况下,这样可以正常工作,但是当循环内的处理需要很长时间时,除了此时间的前10秒以外,情节都会显示为“睡眠”/“睡眠”。这可能非常烦人,因为它通常无法区分曲线(我当然可以使用虚线,但......)。我正在使用Ubuntu,大约10秒是我开始发生这种情况的门槛。
下面是一些重现问题的玩具代码,以及一些用于演示会发生什么的图片。
是否有一种简单的方法可以防止这种情况发生并导致'行为?
import numpy as np
import pylab as p
import time
def create_data(i):
time.sleep(10) # INCREASE THIS VALUE TO MAKE THE PLOT GREY OUT WHILE IT WAITS
return np.sin(np.arange(i) * 0.1)
def live_plot(y):
p.cla()
p.plot(y)
p.plot(y**2)
p.draw()
p.pause(0.01)
for i in xrange(1000):
y = create_data(i)
live_plot(y)
答案 0 :(得分:0)
问题是GUI窗口从窗口管理器的PoV变为无响应,所以它“帮助”灰色显示它告诉你。 gnome / unity中可能有一个设置(不确定您使用的是什么)来禁用它。 (系统依赖,可能不可能:()
一种解决方案是将计算推送到另一个线程/进程,这将允许您使用阻塞show
来保持GUI主循环响应。 (复杂:()
另一个解决方案是在慢速循环中定期戳GUI循环。我认为调用fig.canvas.flush_events()
就足够了。 (脏:()
简而言之,GUI(以及一般的异步内容)很难做到。
答案 1 :(得分:0)
在Ubuntu 18.04中,转到“搜索程序”,然后在搜索框中键入“ compiz”。当ccsm窗口出现时,查找并取消选中“淡入窗口”框。