Multithreaded C API Python questions
Farshid Lashkari
no at spam.com
Thu Nov 9 12:32:17 EST 2006
Svein Seldal wrote:
> I'm unable to get access to python as long as another python call is
> executing. The PyEval_AcquireThread() call blocks until the first call
> returns. I was hoping that the python system itself would release the
> GIL after some execution, but it itsnt.
>
> I am dependent upon the ability to have to threads executing in python
> land at the same time. How can this be done?
Are you creating your threads through python or through C code? If you
are only creating it through C code, then make sure you initialize the
GIL with the following call at the beginning of your application:
PyEval_InitThreads()
From my experience, calling PyGILState_Ensure() was enough. I didn't
need to call any extra threading functions. But make sure that every
call to PyGILState_Ensure() is matched with a call to PyGILState_Release()
-Farshid
More information about the Python-list
mailing list