首页 > 解决方案 > 如何从python中的交互式shell中打破无限生成器循环

问题描述

itertools在 Python 中学习,不小心在 iPython shell 中调用了一个无限循环,这是我的输入:

import itertools as it
list(it.zip_longest(it.count(), [1,2]))

最后一行将无限期运行,直到计算机崩溃。

我试图用 终止执行Ctrl-C,但没有奏效。

在这种情况下如何强制执行终止?

标签: pythongeneratoritertools

解决方案


Python 是一种interpreted语言,因此它会在每一行之后检查指令。同样的情况也发生Ctrl-C了。

Ctrl-C发送KeyboardInterrupt到 Python 解释器并在每条 Python 指令之后对其进行检查,但输出生成it.zip_longest(it.count(), [1,2])在 C 代码中处理,然后处理中断,但解释器从不检查下一条指令,因此即使Ctrl-C执行也不会停止。


推荐阅读