Avoid nested SIGINT handling

Chris Angelico rosuav at gmail.com
Thu Nov 11 01:22:15 EST 2021


On Thu, Nov 11, 2021 at 5:01 PM Jon Ribbens via Python-list
<python-list at python.org> wrote:
>
> On 2021-11-10, Paulo da Silva <p_d_a_s_i_l_v_a_ns at nonetnoaddress.pt> wrote:
> > Hi!
> >
> > How do I handle a SIGINT (or any other signal) avoid nesting?
>
> I don't think you need to. Python will only call signal handlers in
> the main thread, so a handler can't be executed while another handler
> is running anyway.

Threads aren't the point here - signals happen immediately.

Would it be easier to catch KeyboardInterrupt and do your processing
there, rather than actually catching SIGINT?

I'd recommend just trying what you have, and seeing if it's reentrant.
My suspicion is that it isn't, on a technical level (the Python
function will be queued for when it's safe to call it - probably after
the next bytecode instruction), but that your own code will still need
to worry about reentrancy.

ChrisA


More information about the Python-list mailing list