在IPython Notebook中使用交互式小部件时出现渲染延迟

3
当使用IPython笔记本中的交互式小部件,特别是FloatSliderWidget时,有没有延迟渲染最终结果的方法?
我正在使用小部件和basemap来显示地图数据,尝试在每个步骤(滑动滑块-控制图像叠加alpha)时进行渲染速度非常慢。
我可以设置一些标志等来延迟最终渲染吗?或者添加一个按钮,在我设置完所有滑块后显示图像?
非常感谢任何帮助。
祝好, J.
2个回答

5

2019年更新

现在有一个选项continuous_update=False,该选项仅限制滑块到鼠标释放事件的执行。

(https://minrk-ipywidgets.readthedocs.io/en/latest/examples/Using%20Interact.html)

实际操作如下:

from ipywidgets import *
import numpy as np
import matplotlib.pyplot as plt
t= np.arange(0,1,0.01)
def pltsin(f):
    plt.plot(t,np.sin(2*np.pi*t*f))
    plt.show()
interact(pltsin,f=FloatSlider(min=1, max=23, step=1,continuous_update=False))

5

有一个 interact_manual 函数,它的作用类似于 interact,但是有一个“运行”按钮,而不是自动更新。文档。我认为这是 IPython 3 中的新功能。

对于更通用的小部件节流,所有小部件都应该有一个 .msg_throttle 属性。这是可以同时“在管道中”的更新数量。默认值为 3,因此当您拖动滑块时,它会排队三个值以获取结果。将其设置为 1 应该使其对于缓慢的函数更具响应性 - 它不会发送另一个值,直到前一个执行完成。对于更快的函数,较低的值会使输出变化不那么平滑。


.msg_throttle 可以稍微提高性能,但是我正在寻找的是 IPython 3 中的 interact_manual(我进行了快速测试)。现在我会忍受一点抖动,直到 3 版本发布。 - DrJMcAuliffe

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接