Threading a lengthy C function
Thomas Heller
theller at python.net
Thu Nov 20 12:24:53 EST 2003
sdd <daniels at dsl-only.net> writes:
> Leo Breebaart wrote:
>> ...
>> If, however, I use the kind of run() method that I *really* need:
>> def run(self):
>> retvalue = mypackage.sleep(50)
>> where mypackage.sleep() is in fact a SWIG-generated wrapper
>> around the C library sleep() function the entire application
>> will *still* lock up completely until this task is done.
> As you suspect, this is the GIL at work.
I always wondered why (apparently) SWIG does not release the lock before
calling into C code and acquire it back afterwards.
If the original posters intent is simply to call functions in a dll, he
should probably try out ctypes - ctypes handles the GIL automatically
(release before calling the function, acquire it back after return of
the function, and even grabbing the GIL if a callback into Python is
done). And it avoids SWIG completely.
Thomas
More information about the Python-list
mailing list