[Baypiggies] Guido's Blog: It isn't Easy to Remove the GIL
spmcinerney at hotmail.com
Tue Sep 11 16:11:18 CEST 2007
[A great discussion of something complex which I was too timid to ask about
on the list:]
- Essentially the GIL will not go away and the C-implementation of Python
will stay single-threaded, unless some code wizard _other than Guido_ goes
through the effort of
removing it (e.g. for 3.0), and showing that its removal doesn't slow down
single-threaded Python code.
- Includes description of the unpromising prior attempt at this on a fork of
1.5 with 2x slowdown
Guido> "[...] I'd welcome it if someone did another experiment along the
lines of Greg's patch (which I haven't found online), and I'd welcome a set
of patches into Py3k only if the performance for a single-threaded program
(and for a multi-threaded but I/O-bound program) does not decrease.
I would also be happy if someone volunteered to maintain a GIL-free fork of
Python, in case that the single-threaded performance goal can't be met but
there is significant value for multi-threaded CPU-bound applications. We
might even end up with all the changes permanently part of the code base,
but enabled only on request at compile time.
However, I want to warn that there are many downsides to removing the GIL.
It complicates life for extension modules, who can no longer expect that
they are invoked in a "safe zone" protected by the GIL -- as soon as an
extension has any global mutable data, will have to be prepared with
concurrent calls from multiple threads. There might also be changes in the
Python/C API necessitated by the need to lock certain objects for the
duration of a sequence of calls.
While it is my personal opinion, based upon the above considerations, that
there isn't enough value in removing the GIL to warrant the effort, I will
welcome and support attempts to show that times have changed. However, there
is no point in pleading alone -- Python is open source and I have my hands
full dealing with the efforts to produce a quality 3.0 language definition
and implementation on time. I want to point out one more time that the
language doesn't require the GIL -- it's only the CPython virtual machine
that has historically been unable to shed it."
Get a FREE small business Web site and more from Microsoft® Office Live!
More information about the Baypiggies