[Python-Dev] Extension modules, Threading, and the GIL

Guido van Rossum guido@python.org
Mon, 06 Jan 2003 10:11:04 -0500


> We do have a real problem here, and I keep stumbling across it.  So far,
> this issue has hit me in the win32 extensions, in Mozilla's PyXPCOM, and
> even in Gordon's "installer".  IMO, the reality is that the Python external
> thread-state API sucks.  I can boldly make that assertion as I have heard
> many other luminaries say it before me.  As Tim suggests, time is the issue.
> 
> I fear the only way to approach this is with a PEP.  We need to clearly
> state our requirements, and clearly show scenarios where interpreter states,
> thread states, the GIL etc all need to cooperate.  Eg, InterpreterState's
> seem YAGNI, but manage to complicate using ThreadStates, which are certainly
> YNI.  The ability to "unconditionally grab the lock" may be useful, as may a
> construct meaning "I'm calling out to/in from an external API" discrete from
> the current singular "release/acquire the GIL" construct available today.
> 
> I'm willing to help out with this, but not take it on myself.  I have a fair
> bit to gain - if I can avoid toggling locks every time I call out to each
> and every function there would be some nice perf gains to be had, and
> horrible code to remove.

I welcome a PEP on this!  It's above my own level of expertise, mostly
because I'm never in a position to write code that runs into this...

--Guido van Rossum (home page: http://www.python.org/~guido/)