On Tue, Sep 25, 2018 at 9:30 AM Gregory P. Smith <g...@krypto.org> wrote:
> We can't change the API of the main thread being where signal handlers are
> executed by default.
>
> If a signal handler raised an exception in a daemon thread, the process would
> not die when it goes uncaught (ie: why KeyboardInterrupt works).  The daemon
> thread ends and the rest of the process is unaware of that.  Many existing
> Python signal handlers expect to only be called from the main thread.

Ah, that's good to know.  Thanks, Greg!

> If we wanted to change this, we'd probably want to have users declare which
> thread(s) are allowed to execute which signal handlers at signal handler
> registration time and whether they are executed by only one of those threads 
> or
> by all of those threads.  Not semantics I expect most people are used to 
> because
> I'm not aware of any other language doing that.  But I don't see a compelling 
> use
> case for implementing such complexity.

That's similar to what I imagined, based on how signals and posix
threads interact. Likewise I consider it not nearly worth doing. :)

> Maybe something like that would make sense for subinterpreter delegation only?
> I'm not sure.  I'd start without signals at all in subinterpreters before 
> making such
> a decision.
>
> Python keeping signals simple has long been cited as a feature of the VM.

Exactly.  For now I was planning on keeping signals main-thread-only
(consequently main-interpreter-only).  There's the possibility we
could support per-interpreter signal handlers, but I don't plan on
exploring that idea until well after the more important stuff is
finished.

-eric
_______________________________________________
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

Reply via email to