在REPL中,我们通常可以使用sigint中断无限循环,即 ctrl + c ,并在解释器中重新获得控制权。
>>> while True: pass
...
^CTraceback (most recent call last):
File "<stdin>", line 1, in <module>
KeyboardInterrupt
>>>
但是在这个循环中,中断似乎被阻止了,我必须杀死父进程才能逃脱。
>>> *x, = itertools.repeat('x')
^C^C^C^C^C^C^C^C^\^\^\^\^\^Z^Z^Z^Z
为什么?
答案 0 :(得分:10)
在每条Python指令后检查KeyboardInterrupt
。 itertools.repeat
和元组生成在C代码中处理。之后处理中断,即从不处理。