Python Jupyter ipywidget的消息队列在哪里?

Python Jupyter ipywidget的消息队列在哪里?,python,jupyter-notebook,ipywidgets,Python,Jupyter Notebook,Ipywidgets,我有一个交互式绘图,使用matplotlib和ipywidgets,速度非常慢,因此显示滞后于交互。解决这个问题的一种方法是告诉我的小部件是连续的\u update=False,但我不想这样做——我希望用户通过连续的反馈看到更改 我想也许我可以检查来自小部件的消息队列:如果队列中有后续更改,则当前状态已过期,我还可以抑制打印。消息肯定是在某处排队的。此消息队列可访问吗 这里有一个最小的例子 import matplotlib.pyplot as plt import numpy from IPy

我有一个交互式绘图,使用matplotlib和ipywidgets,速度非常慢,因此显示滞后于交互。解决这个问题的一种方法是告诉我的小部件是
连续的\u update=False
,但我不想这样做——我希望用户通过连续的反馈看到更改

我想也许我可以检查来自小部件的消息队列:如果队列中有后续更改,则当前状态已过期,我还可以抑制打印。消息肯定是在某处排队的。此消息队列可访问吗

这里有一个最小的例子

import matplotlib.pyplot as plt
import numpy
from IPython.display import display
import ipywidgets

# Don't want continuous_update=False
widg = ipywidgets.FloatSlider(value=.5,min=0,max=1,step=.01)
output = ipywidgets.Output()

def update_plot(msg):
    # ??? if there are further changes queued: return
    a = widg.value  # or msg['new']
    x = numpy.linspace(0,1,100)
    plt.plot(x, (x>=a) & (x<=a+.2))
    plt.ylim(-.02,1.02)
    output.clear_output(wait=True)
    with output:
        plt.show()

widg.observe(update_plot, 'value')

display(ipywidgets.VBox([widg, output]))
update_plot(None)
导入matplotlib.pyplot作为plt
进口numpy
从IPython.display导入显示
导入IPyWidget
#不希望连续更新=False
widg=ipywidgets.FloatSlider(值=0.5,最小值=0,最大值=1,步长=0.01)
output=ipywidgets.output()
def更新图(msg):
# ??? 如果队列中还有其他更改:return
a=widg.value#或msg['new']
x=numpy.linspace(0,1100)

plt.plot(x,(x>=a)和(xMaarten-Breddels为提供类似功能的装饰器编写了一些有用的代码:
debounced
()Breddels代码用于不同的用例。我希望用户通过连续交互获得反馈(例如,当您来回拖动滑块时,您可以看到它如何影响输出).Breddels代码用于取消公告(即,只有在用户完成交互或至少暂停交互后,更新才会发生)。取消公告可以在不查看消息队列的情况下实现,但我认为我的持续交互案例无法实现。