ipython notebook

时间:2016-05-17 15:48:22

标签: ipython interrupt jupyter-notebook ipywidgets

我正在ipython笔记本中运行一些数据分析。一台单独的机器收集一些数据并将它们保存到服务器文件夹,我的笔记本定期扫描该服务器以获取新文件,然后对其进行分析。

我在while循环中执行此操作,每秒检查新文件。目前我已将其设置为在分析一些新文件时终止。但是,我希望在按键时终止。

我尝试过尝试捕捉键盘中断,如下所示:How to kill a while loop with a keystroke?

但它似乎不适用于ipython笔记本(我使用的是Windows)。

使用openCV的keywait确实对我有用,但我想知道是否有其他方法而无需导入opencv。

我也尝试过实现一个中断循环的按钮小部件,如下所示:

from ipywidgets import widgets 
import time
%pylab inline

button = widgets.Button(description='Press to stop')
display(button)

class Mode():
    def __init__(self):
        self.value='running'

mode=Mode()

def on_button_clicked(b):
    mode.value='stopped'

button.on_click(on_button_clicked)

while True:
    time.sleep(1)
    if mode.value=='stopped':
        break

但是我看到循环基本上忽略了按下按钮。

1 个答案:

答案 0 :(得分:10)

您可以通过菜单触发笔记本中的KeyboardInterrupt"内核 - >中断"

所以使用这个:

try:
    while True:
        do_something()
except KeyboardInterrupt:
    pass

按照建议here并点击此菜单条目。