ipywidgets 交互:设置帧率?

ipywidgets interact: set the framerate?

我在一个较长的 运行 过程中有一个 ipywidgets.interact 滑块。这会造成这样一种情况,当我移动滑块时,多个值会被缓冲,我坐下来等待一段时间,让输出“赶上”我移动滑块的位置。我想设置在使用滑块时缓冲的值的数量。

示例:

from ipywidgets import interact
import matplotlib.pyplot as plt
import cv2
from skimage import io

image = io.imread('https://www.wikipedia.org/portal/wikipedia.org/assets/img/Wikipedia-logo-v2.png')

@interact
def edges(low=100, high=150, aperture=3):
    plt.imshow(cv2.Canny(image, low, high, apertureSize=aperture))

试着四处移动滑块并观察图像在停止后继续更新一段时间。我在笔记本电脑上,所以如果你有一台机器的野兽,你的里程可能会有所不同。

如何为 interact 函数设置“帧率”?

continuous_update 设置是您要为滑块禁用的设置。但是,我不是 100% 确定您可以将它与简单的装饰器方法一起使用吗?你试过这个吗:

from ipywidgets import interact
import matplotlib.pyplot as plt
import cv2
from skimage import io

image = io.imread('https://www.wikipedia.org/portal/wikipedia.org/assets/img/Wikipedia-logo-v2.png')

@interact(continuous_update=False)
def edges(low=100, high=150, aperture=3):
    plt.imshow(cv2.Canny(image, low, high, apertureSize=aperture))

我试过了,没有说 @interact(continuous_update=False) 行有问题。但是,我没有看到它没有它会变慢,因此很难测试它是否具有预期的效果。

如果您自己定义滑块并且不使用 @interact 路由来处理自动为您提供滑块,则它肯定可用于您的滑块。