On Tue, Oct 17, 2017 at 9:44 PM, Brendan Barnwell <brenbarn@brenbarn.net> wrote:
On 2017-10-17 07:26, Serhiy Storchaka wrote:
17.10.17 17:06, Nick Coghlan пише:
Keep in mind we're not talking about a regular loop you can break out of with Ctrl-C here - we're talking about a tight loop inside the interpreter internals that leads to having to kill the whole host process just to get out of it.
And this is the root of the issue. Just let more tight loops be interruptible with Ctrl-C, and this will fix the more general issue.
I was just thinking the same thing. I think in general it's always bad for code to be uninterruptible with Ctrl-C.
Indeed I agree about this.
If these infinite iterators were fixed so they could be interrupted, this containment problem would be much less painful.
I'm unable to reproduce the "uninterruptible with Ctrl-C" problem with infinite iterators. At least itertools doesn't seem to have it:
import itertools for i in itertools.count(): ... pass ... ^CTraceback (most recent call last): File "<stdin>", line 1, in <module> KeyboardInterrupt
for i in itertools.repeat(1): ... pass ... ^CTraceback (most recent call last): File "<stdin>", line 1, in <module> KeyboardInterrupt
for i in itertools.cycle((1,)): ... pass ... ^CTraceback (most recent call last): File "<stdin>", line 1, in <module> KeyboardInterrupt
Same thing on both Windows and Linux, Python 3.6. ––Koos -- + Koos Zevenhoven + http://twitter.com/k7hoven +