On Tue, Nov 12, 2019 at 3:11 PM Victor Stinner <vstin...@python.org> wrote:
> Are you ok to modify internal C functions to pass explicitly tstate?

I'm also in favor (strongly)!  (no surprises there)

The only concerns I've heard is that on some platforms there is a
measurable overhead once you hit a threshold of a specific small
number of parameters.  Adding this extra parameter will put some
functions over that threshold.  I don't have any more information than
that.

> There are different reasons to pass explicitly tstate, but my main
> motivation is to rework Python code base to move away from implicit
> global states to states passed explicitly, to implement the PEP 554
> "Multiple Interpreters in the Stdlib". In short, the final goal is to
> run multiple isolated Python interpreters in the same process: run
> pure Python code on multiple CPUs in parallel with a single process
> (whereas multiprocessing runs multiple processes).

FTR, PEP 554 is explicitly independent of efforts to stop sharing the
GIL between interpreters.  I argue there that it is a good idea
regardless.

The existing functionality the PEP exposes, though, clearly benefits
from better isolation between interpreters (including not sharing the
GIL). :)

On Thu, Nov 14, 2019 at 4:12 AM Victor Stinner <vstin...@python.org> wrote:
> Another approach would be to pass a "PyContext*" pointer which
> contains tstate, but also additional fields. But I chose to state with
> a direct "PyThreadState* tstate" to avoid one indirection to every
> tstate access. Currently, tstate seems to be enough for the current
> code base.

FWIW, I favor this approach as well.  As long as it is an opaque type,
a PyContext allows us to be more flexible in adapting to the future.
For now it could even be a simple alias for PyThreadState.
Regardless, I'm not convinced that using a PyContext will have a real
impact on runtime performance.

Also, we already use "context" in a number of ways in Python.  So
"PyContext" might not be the best name.  It probably needs to be a
name without "context" in it or one with a concrete clue (e.g.
'PyRuntimeContext").

Anyway, thanks for driving this discussion, Victor!

-eric
_______________________________________________
Python-Dev mailing list -- python-dev@python.org
To unsubscribe send an email to python-dev-le...@python.org
https://mail.python.org/mailman3/lists/python-dev.python.org/
Message archived at 
https://mail.python.org/archives/list/python-dev@python.org/message/C7EQXGL3RCOLQNBCK7CVRDT52FWJFAVT/
Code of Conduct: http://python.org/psf/codeofconduct/

Reply via email to