On 28 March 2017 at 03:11, Steven D'Aprano <st...@pearwood.info> wrote: > On Mon, Mar 27, 2017 at 10:33:44PM -0400, Terry Reedy wrote: >> https://bugs.python.org/issue29926 was opened as an IDLE issue, which >> means that most watching the new issues list would ignore it. But I >> think it is an issue with _thread.interrupt_main (which IDLE calls in >> respond to ^C) not interrupting time.sleep(n) in main thread*. I tested >> on Windows, don't know yet about OP. Since there is no Expert's Index >> listing for _thread (or threading), I am asking here for someone who >> knows anything to take a look. >> >> * >> >>> time.sleep(10) >> <hit ^C immediately> >> <debug print after interrupt_main() shows immediately> >> <... remainder of 10 seconds pass> >> KeyboardInterrupt > > > I get similar behaviour under Linux. I don't have the debug print, but > the KeyboardInterrupt doesn't interrupt the sleep until the 10 seconds > are up.
Looking at the implementation, _thread.interrupt_main just calls PyErr_SetInterrupt. It doesn’t appear to send a signal. I played with “strace” and couldn’t see any evidence of a signal. I guess it just sets a flag that will be polled. To actually interrupt the “sleep” call, you might need to use “pthread_kill” or similar (at least on Unix). _______________________________________________ Python-Dev mailing list Python-Dev@python.org https://mail.python.org/mailman/listinfo/python-dev Unsubscribe: https://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com