[Python-Dev] PEP 554 v2 (new "interpreters" module)
Stefan Krah
stefan at bytereef.org
Fri Sep 8 19:28:42 EDT 2017
On Fri, Sep 08, 2017 at 04:04:27PM -0700, Eric Snow wrote:
> * "stdlib support for subinterpreters adds extra burden
> on C extension authors"
>
> In the ``Interpreter Isolation`` section below we identify ways in
> which isolation in CPython's subinterpreters is incomplete. Most
> notable is extension modules that use C globals to store internal
> state. PEP 3121 and PEP 489 provide a solution for most of the
> problem, but one still remains. [petr-c-ext]_ Until that is resolved,
> C extension authors will face extra difficulty to support
> subinterpreters.
It's a bit of a hassle, and the enormous slowdown in some of the existing
solutions is really a no go [1].
In the case of _decimal, the tls-context is already subinterpreter safe
and reasonable fast due to caching.
The most promising model to me is to put *all* globals in a tls structure
and cache the whole structure. Extrapolating from my experiences with the
context, this might have a slowdown of "only" 4%.
Still, the argument "who uses subinterpreters?" of course still remains.
Stefan Krah
[1] I'm referring to the slowdown of heaptypes + module state.
More information about the Python-Dev
mailing list