python - 如何从python中的交互式shell中打破无限生成器循环
问题描述
我itertools
在 Python 中学习,不小心在 iPython shell 中调用了一个无限循环,这是我的输入:
import itertools as it
list(it.zip_longest(it.count(), [1,2]))
最后一行将无限期运行,直到计算机崩溃。
我试图用 终止执行Ctrl-C
,但没有奏效。
在这种情况下如何强制执行终止?
解决方案
Python 是一种interpreted
语言,因此它会在每一行之后检查指令。同样的情况也发生Ctrl-C
了。
Ctrl-C
发送KeyboardInterrupt
到 Python 解释器并在每条 Python 指令之后对其进行检查,但输出生成it.zip_longest(it.count(), [1,2])
在 C 代码中处理,然后处理中断,但解释器从不检查下一条指令,因此即使Ctrl-C
执行也不会停止。
推荐阅读
- angular - 嵌套反应形式始终有效
- php - 如何将每个结果的更多细节添加到 solr facet?
- codeigniter - 如何在控制器的 $promise->then() 中加载 CodeIgniter 视图?
- c# - 找不到标准资产 | 统一2018.3.0f2
- kubernetes - Kubernetes 服务有时无响应
- java - 为什么我不能写 ch=ch+1; 而不是 ch++; 尽管它们具有相同的含义
- javascript - 在模拟/存根 Solidity 智能合约功能时使用 Javascript 进行测试
- c# - 如何从连接到 mvc 5 中 AspNetUsers 表的数据库表中获取数据
- javascript - 在浅渲染功能组件上调用 instance() 返回 null
- php - php strpos总是返回false,我想得到一个正确的答案