extension module, thread safety?
Pierre Barbier de Reuille
pierre.barbier at cirad.fr
Tue Jan 18 02:30:33 EST 2005
David Bolen a écrit :
>
> If the threads under discussion are all Python threads, then by
> default yes, the extension module C functions will appear to be atomic
> from the perspective of the Python code. When the Python code calls
> into the extension module, the GIL (global interpreter lock) is still
> being held. Unless the extension module code explicitly releases the
> GIL, no other Python threads can execute (even though those threads
> are in fact implemented as native platform threads).
Indeed, there is this (so annoying) GIL ... is there any project about
extracting the (few ?) critical points of the python interpreter to put
locks around them instead of choosing the opposite strategy (ie. locking
anythime but when we know the section is not critical) ? Because it
would made embedding a python interpreter in another language much more
easy !
With the current CPython, it's very hard to mix Python and C in a
multithreading application (with C-threads, not Python-threads). In fact
I never really succeeded in that task because of that GIL ! I have a
multi-thread application but every bit of Python code must be run into a
Python thread. To be more precise, I wanted to be able to call Python
code in response to some GUI events, and I didn't want to instanciate a
new interpreter for I wanted to be able to access the environment of my
main Python interpreter.
By the way, if someone succeeded in a similar task, I'll be happy to
hear about it :)
Pierre
PS: if the main code is in C (in fact C++ ...) and not Python it's for
historical reasons of course ;)
More information about the Python-list
mailing list