【问题标题】:Rendering Delay with Interact Widgets in IPython NotebookIPython Notebook 中使用交互小部件的渲染延迟
【发布时间】:2015-02-24 10:50:35
【问题描述】:

在 IPython Notebook 中使用 Interactive Widgets,特别是 FloatSliderWidget 时,有没有办法延迟最终结果的呈现?

我正在使用小部件和底图来显示地图数据,并且在每一步(滑动滑块时 - 控制图像叠加 alpha 时)的渲染尝试非常慢。

我可以设置一些延迟最终渲染的标志等吗?或者在我设置完所有滑块后添加一个按钮来显示图像?

非常感谢您的帮助。

干杯, J.

【问题讨论】:

    标签: python widget ipython ipython-notebook matplotlib-basemap


    【解决方案1】:

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

    对于更普遍的节流小部件,所有小部件都应具有.msg_throttle 属性。这就是一次可以“在管道中”进行多少更新。默认值为 3,因此当您拖动滑块时,它会将三个值排队以获得结果。将其设置为 1 应该使其对慢速函数的响应更快 - 在上一次执行完成之前它不会发送另一个值。对于更快的函数,较低的值会使输出变化不太平滑。

    【讨论】:

    • .msg_throttle 稍微提高了性能,但来自 IPython 3 的 interact_manual 是我正在寻找的(我做了一个快速测试)。现在我会有点紧张,直到 3 发布。
    【解决方案2】:

    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))
    

    【讨论】:

      猜你喜欢
      • 2014-09-17
      • 2015-11-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-11-18
      • 2011-07-07
      • 2015-08-28
      • 2011-12-02
      相关资源
      最近更新 更多