[Python-Dev] Questions about signal handling.
Eric Snow
ericsnowcurrently at gmail.com
Mon Sep 24 19:24:02 EDT 2018
On Mon, Sep 24, 2018 at 3:10 PM Yury Selivanov <yselivanov.ml at gmail.com> wrote:
> On Mon, Sep 24, 2018 at 4:19 PM Eric Snow <ericsnowcurrently at gmail.com> wrote:
> > This matters to me because I'd like to use "pending" calls for
> > subinterpreters, which means dealing with signals *in*
> > Py_MakePendingCalls() is problematic. Pulling the
> > PyErr_CheckSignals() call out would eliminate that problem.
>
> Py_MakePendingCalls is a public API, even though it's not documented.
> If we change it to not call PyErr_CheckSignals and if there are C
> extensions that block pure Python code execution for long time (but
> call Py_MakePendingCalls explicitly), such extensions would stop
> reacting to ^C.
>
> Maybe a better workaround would be to introduce a concept of "main"
> sub-interpreter? We can then fix Py_MakePendingCalls to only check for
> signals when it's called from the main interpreter.
I'm planning on making Py_MakePendingCalls() a backward-compatible
wrapper around a new private _Py_MakePendingCalls() which supports
per-interpreter operation. Then the eval loop will call the new
internal function. So nothing would change for users.
-eric
More information about the Python-Dev
mailing list