Ipython: 无法中断笔记本中的无限循环

创建于 2013-01-13  ·  29评论  ·  资料来源: ipython/ipython

我最近在基因组学研讨会上介绍了 Python 编程。 在本教程中,我们使用了笔记本界面,并且非常受欢迎(谢谢!)。 在讨论循环的过程中,我要求学生将一个例子 for 循环转换为一个 while 循环。 在这个过程中,许多学生创造了无限循环。 对于其中一些学生来说,它使 Firefox 崩溃。 解决方法是终止笔记本服务器并终止浏览器。 所有学生都使用基于 Ubuntu 的虚拟机和 Firefox 作为浏览器。 如果有帮助,我可以获得有关系统的更多详细信息,并调查是否可以在我的虚拟机副本上重新创建此行为。

needs-info

最有用的评论

我认为我们中的一个人需要找到一个简单的笔记本来复制这个问题,至少在某些系统上是这样。

while True:
    print "foo"

这使得 Firefox 使用 100% CPU 并且以任何方式或形式无响应。 杀死 Firefox 和 IPython 进程是恢复系统的唯一方法。

蟒蛇 3.0.0
火狐 42.0
Linux 3.13.0-24-通用

所有29条评论

是否有可能崩溃的一个产生输出而不是一个没有使浏览器崩溃的输出?
(你应该在一个菜单中有一个杀死内核)

我们可能有一个安全选择超时,它会杀死服务器 si 内核保持忙碌太久,或者前端接收太多输入

我认为这里有两个问题:

  • 中断无限循环是完全可能的。 在内核菜单上,单击中断。
  • 如果你的循环在每一步都打印一些东西,它会产生大量的输出,这可能会给浏览器带来问题。 另见问题#1975。

@Carreau没有输出

@takluyver内核菜单没有响应。 正在打印的循环和未打印的循环会发生这种情况。

你能举一个它不起作用的循环的例子吗?

2013 年 1 月 13 日 16:11,Daniel McDonald [email protected]写道:

@Carreau https://github.com/Carreau没有输出

@takluyver https://github.com/takluyver内核菜单不是
反应灵敏。 这会发生在正在打印的循环和
没有打印。


直接回复此邮件或在 Gi tHub上查看 https://github.com/ipython/ipython/issues/2781#issuecomment -12195606。

当单词不是彼此的字谜时,一种天真的/可怕的字谜算法

from random import shuffle 
word1 = list("quietx")
word2 = list("quite")
while word1 != word2:
    shuffle(word1)

我刚刚测试过,我可以在 Firefox 和 Ubuntu 上毫无问题地打断那个。 你能在你的系统上可靠地复制它吗?

我无法在我的系统上复制它。 我将追踪遇到问题的用户并在他们的系统上重新运行。 研讨会会议明天早上继续——研讨会在欧洲,今天是休息日——所以我还需要一点时间才能重新开始。

我不再能够对此进行测试,也无法跟进
作坊。 鉴于我无法重现该问题,其他任何人也无法重现,
让我们把它归结为侥幸。

再次感谢您的快速反应,我很抱歉为此浪费时间

2013 年 1 月 13 日星期日上午 9:57,Thomas Kluyver [email protected]写道:

我刚刚测试过,我可以在 Firefox 上毫无问题地中断那个
&Ubuntu。 你能在你的系统上可靠地复制它吗?


直接回复此邮件或在 Gi tHub上查看 https://github.com/ipython/ipython/issues/2781#issuecomment -12196271。

不用担心。 如果您找到重现错误的方法,请随时重新打开。

我一直在 chrome 的 IPython notebook 中得到这个(我刚刚在 Firefox 中测试了它,它“成功”了,即它崩溃了)。 我_认为_每当我有一个经常打印的无限循环时都会发生这种情况。 这对我来说是个问题,因为我经常使用打印语句进行调试,在这种情况下,由于崩溃,我丢失了应该修复我的错误的代码。

她是我用来让它崩溃的代码:

将 numpy 导入为 np
x = np.array([0,1,2,3,4])
它 = np.nditer(x,flags=['f_index'])
虽然不是它。完成:
打印它.index

这也发生在我身上...
首先浏览器变得无响应,后来我发现整个系统挂起。 我被迫进行硬重置。
我使用带有 xfce 桌面/firefox 的 Ubuntu。
如果有帮助,我愿意分享您可能需要解决此问题的任何其他细节......
@minrk

这个问题好像还在!

我可以从内核菜单运行“中断”或“重启”,但它根本没有生效。 运行图标仍显示为黑球。

即使我重新启动计算机,再次单击笔记本后,它也会永远循环在那里!

我正在使用安装了 ipython 2.2.0 的 MacBook。

我也遇到过这个问题:ipython notebook 挂在浏览器中,无法使用中断内核恢复。 除了循环错误之外,这似乎发生在任何挂起的过程中,例如,如果函数内的互联网查询由于网络原因挂起。

我的问题是,有没有办法从命令行访问底层内核? 我从终端启动 ipython notebook,目前我的解决方案是通过键盘中断该终端,从而完全关闭内核。

我也有这个关键问题。 它似乎确实与循环有关。 这使我无法运行长时间的模拟或数据分析,这意味着:我搞砸了......

我不知道它是否相关,但我注意到一旦它挂起,超线程似乎崩溃到一个仍在工作的 CPU 中。 例如,您可以通过使用htop看到这一点。 起初,在我看来,超线程(numpy -> BLAS 库正在我的机器上利用)是一个崩溃,然后整个事情会运行得非常慢,但后来我试图打断但没有运气,所以我意识到这是 IPython 内核卡住了。

在以下情况下,我从未出现过此问题:

  • 我使用的是旧机器(但仍然非常相似,只是 RAM 和 CPU 更少)
  • 我使用的是旧的 ipython<3.0
  • 我没有在远程 IPython 笔记本上工作

我有根据的猜测是:

  • 某处的某些插座有问题...
  • matplotlib 线程后端搞砸了 <-- 但这只是因为他们几乎总是这样做更好地把赌注放在那里;)

当问题发生时,我只是从 Web 界面中重新启动内核并重新执行我正在做的事情......

编辑:我也很难重现它,但我注意到如果我不使用 BLAS,例如如果我不使用 numpy 的点积,问题就不会出现,尽管我应该运行更多测试来验证这一点。

我也经常看到这个问题并且很难解决 - 如果在内核中处理大量数据非常耗时,那么杀死所有内容并强制重启可能会很痛苦。 绝对不是想象中的错误:)

我在 OSX + chrome 上也有这个问题。

@minrk ,我认为这可能值得重新打开。 我没有足够的权限来重新打开而不是创建一个新问题。

从 CLI 看来,按下停止按钮正在做某事,但笔记本电脑仍然完全没有响应。

[I 15:26:22.224 NotebookApp] Kernel interrupted: edee0497-b340-43fd-be77-1ad67e5170ee
[I 15:26:32.197 NotebookApp] Kernel interrupted: edee0497-b340-43fd-be77-1ad67e5170ee
[I 15:26:42.688 NotebookApp] Saving file at /Untitled.ipynb
[I 15:27:30.993 NotebookApp] Kernel interrupted: edee0497-b340-43fd-be77-1ad67e5170ee
[I 15:27:35.605 NotebookApp] Kernel interrupted: edee0497-b340-43fd-be77-1ad67e5170ee
[I 15:28:43.999 NotebookApp] Saving file at /Untitled.ipynb
[I 15:29:28.038 NotebookApp] Kernel interrupted: edee0497-b340-43fd-be77-1ad67e5170ee

我认为我们中的一个人需要找到一个简单的笔记本来复制这个问题,至少在某些系统上是这样。 否则可能无法修复。

我也看到了这个问题。

我认为我们中的一个人需要找到一个简单的笔记本来复制这个问题,至少在某些系统上是这样。

while True:
    print "foo"

这使得 Firefox 使用 100% CPU 并且以任何方式或形式无响应。 杀死 Firefox 和 IPython 进程是恢复系统的唯一方法。

蟒蛇 3.0.0
火狐 42.0
Linux 3.13.0-24-通用

我可以用
ipython 3.2.0
蟒蛇2.7.10
Chrome 版本 46.0.2490.86(64 位)
OSX 10.10.5

对我来说也是相当大的烦恼。 由于这个问题,我经常不得不杀死整个笔记本服务器以及 chrome。 我可以到达单击中断内核按钮的地步,它会像单击它一样突出显示,但是某些地方没有收到要停止的消息。

我最初的印象是 chrome 的文本渲染引擎有问题,但我对它的工作原理知之甚少。

另一个缓慢的例子是当一个相对较大的 matplotlib 在滚动到它后出现在前台时。 整个笔记本变得非常紧张,持续了 4-5 秒。

对于它的价值,我正在使用一台相当强大的机器,所以特别奇怪的是 jupyter 可以让我的整个机器瘫痪。

9/10,它是偶然发生的,所以它不像称之为用户错误那么容易。

我刚刚遇到了这个问题(或者至少它符合上述配置文件)。 我无法让窗口定期响应,但_我可以_对整个页面进行非常慢的剪贴板副本,这让我可以保留我最近的代码更改。

不是解决问题的方法,而是减轻其后果的潜在方法。

我今天和过去都遇到过同样的问题,运行 Linux Mint(18.0) 和 firefox。 这是一个非常简单的 count() 生成器,但我搞砸了 __getitem__ 并且以一种愚蠢的方式在键上设置了一个打印。

我们最新版本的软件包实现了输出限制,这应该可以缓解大量输出减慢浏览器速度的问题。

关闭,因为这个问题不在 IPython 本身中,如果仍然有问题和相关,应该在正确的存储库中打开。 这将允许控制 IPython 存储库上打开的问题的数量。

如有必要,请随时发表评论或重新打开。

谢谢。

@Carreau ,您是否有建议的存储库(或者这只是没有转移到跟踪笔记本问题的地方......)?

这将需要迁移到 jupyter/notebook 或 jupyterlab/jupyterlab。 如果它也影响 jupyterlab,则可能是第二个。

此页面是否有帮助?
0 / 5 - 0 等级