为什么我不能打破这个itertools无限循环?

时间:2016-03-30 21:57:49

标签: python python-3.x signals posix

在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

为什么?

1 个答案:

答案 0 :(得分:10)

在每条Python指令后检查KeyboardInterruptitertools.repeat和元组生成在C代码中处理。之后处理中断,即从不处理。