After no response, maybe more specifics with our Multi-Threaded Python
w/ PyQt problem would help:

In the main thread, we do:

PyEval_InitThreads(); // acquires the lock
PyInitialize();
// other init stuff
PyThread_release_lock()

…and in each new Python thread we do:
Py_NewInterpreter()
…
PyThreads_release_lock()

We call release()/acquire() blocks whenever the python script does a
blocking operation.  A specific example of a lockup with PyQT is
running examples/tutorial/t8.pyw.  We basically:

PyThreads_acquire_lock()
<run example script>
PyThreads_release_lock()

When a slot is invoked as a result of the slider being moved we get a
deadlock.  This happens when sip_ProtectVirt_languageChange calls
PyThreads_release_lock() on an already released lock.  If we don’t
release the lock after the main thread PyQT script code runs, then the
script runs fine – but our other python script threads will be starved
out.

Anybody have any ideas on how to resolve this deadlock?

-McKay Davis

On Mon, Mar 9, 2009 at 2:12 PM, McKay Davis <mckay....@gmail.com> wrote:
>
> All,
>
> We are encountering difficulties embedding PyQT into our application.  In our 
> situation, we provide the capability to run multiple python interpreters 
> simultaneously along with the main thread PyQT interpreter.
>
> We try to correctly manage the python global interpreter lock in such a way 
> so that we can run PyQT python code in conjunction with non-PyQt python code 
> running in other threads.  What we have found however, is that under some 
> circumstances (ie , our application will deadlock since there appears to be 
> an implicit assumption that the global interpreter lock is already held the 
> moment that slot code is invoked by PyQT.
>
> We can assure this to be the case, but only at the expense of locking other 
> python code threads out of the global interpreter lock.  Are there any 
> provisions to accommodate what we are trying to do that we are not making use 
> of?  Or is this perhaps a known issue?  Are there any workarounds?  We would 
> appreciate any help or tips on this.
>
> Thanks,
>
> McKay Davis

_______________________________________________
PyQt mailing list    PyQt@riverbankcomputing.com
http://www.riverbankcomputing.com/mailman/listinfo/pyqt

Reply via email to