Status of Python threading support (GIL removal)?

OdarR Olivier.Darge at gmail.com
Fri Jun 19 20:08:31 CEST 2009


On 19 juin, 19:13, s... at pobox.com wrote:
>     Olivier> what do you mean ?
>
>     Olivier> Cpython can't benefit from multi-core without multiple
>     Olivier> processes.
>
> It can, precisely as Martin indicated.  Only one thread at a time can hold
> the GIL.  That doesn't mean that multiple threads can't execute.  Suppose

I don't say multiple threads can't execute....(?).
I say that with the Python library, I don't see (yet) benefit with
multiple threads *on* multiple CPU/core.

Ever seen this recent video/presentation ? :
http://blip.tv/file/2232410
http://www.dabeaz.com/python/GIL.pdf

> you have two threads, one of which winds up executing some bit of C code
> which doesn't mess with the Python run-time at all (say, a matrix multiply).

I don't know how to do that with common Python operations...
Only one thread will be really running at a time in memory (meanwhile
other thread are waiting).
Are you refering to a specialized code ?

> Before launching into the matrix multiply, the extension module releases the
> GIL then performs the multiply.  With the GIL released another thread can
> acquire it.  Once the multiply finishes the first thread needs to reacquire
> the GIL before executing any calls into the Python runtime or returning.

I don't see such improvement in the Python library, or maybe you can
indicate us some meaningfull example...?

I currently only use CPython, with PIL, Reportlab...etc.
I don't see improvement on a Core2duo CPU and Python. How to proceed
(following what you wrote) ?

A contrario, I saw *real* improvement on parallel computing with the
Py 2.6 multiprocessing module.

Olivier



More information about the Python-list mailing list