[Python-Dev] PEP 554 v3 (new interpreters module)

Antoine Pitrou solipsis at pitrou.net
Wed Oct 4 12:02:07 EDT 2017


On Wed, 4 Oct 2017 17:50:33 +0200
Antoine Pitrou <solipsis at pitrou.net> wrote:
> On Mon, 2 Oct 2017 21:31:30 -0400
> Eric Snow <ericsnowcurrently at gmail.com> wrote:
> >   
> > > By contrast, if we allow an actual bytes object to be shared, then
> > > either every INCREF or DECREF on that bytes object becomes a
> > > synchronisation point, or else we end up needing some kind of
> > > secondary per-interpreter refcount where the interpreter doesn't drop
> > > its shared reference to the original object in its source interpreter
> > > until the internal refcount in the borrowing interpreter drops to
> > > zero.    
> > 
> > There shouldn't be a need to synchronize on INCREF.  If both
> > interpreters have at least 1 reference then either one adding a
> > reference shouldn't be a problem.  
> 
> I'm not sure what Nick meant by "synchronization point", but at least
> you certainly need INCREF and DECREF to be atomic, which is a departure
> from today's Py_INCREF / Py_DECREF behaviour (and is significantly
> slower, even on high-level benchmarks).

To be clear, I'm writing this under the hypothesis of per-interpreter
GILs.  I'm not really interested in the per-process GIL case :-)

Regards

Antoine.




More information about the Python-Dev mailing list