[Stackless] multi-core processing?

Jeff Senn senn at maya.com
Mon Jun 16 15:36:12 CEST 2008


On Jun 16, 2008, at 9:14 AM, Jeff Senn wrote:

> One quick (perhaps barely relevant) clarification:
> Simon mentions "spawning multiple Python interpreters through the C/ 
> Python API"
>
> Even if you use the C API to create multiple interpreters in the same
> processes (but in different threads), you will STILL be at odds with  
> the GIL.

Hm... so I was curious and had a look at the interpreter code.  I have  
to
slightly take-back that statement.  It appears that there might be a  
way to
spawn different interpreters in the same process and avoid the GIL.

If you can avoid python calling PyEval_InitThreads(), the GIL will not
be initialized or used.  So if you are very careful to use no *python*
code that causes threading to be enabled, you might get away with
non-interlocked python interpreters within the
same process but different threads.

Though I think this would be considered a hack!  (i.e. I'm not sure that
it is safe, possible, and supported)

>
>
> The GIL is held in a static variable of the interpreter code (Python/ 
> ceval.c)
> so you really do need to arrange for separate PROCESSES. (Separate  
> static spaces
> for the Python libraries).
>
> It sounds like you are running separate processes and are good...
>




More information about the Stackless mailing list