Thanks for the inquires. Like I said before, I've worked around my performance issues. Now this is only a curiosity for future projects. See my comments below.

David Boddie wrote:
It's not obvious from your description of the problem that the GIL is the
main cause, though it may be - it depends what your other module is doing.

Unfortunately, I can't recreate my situation since the bottleneck was caused in one of our proprietary libraries that is a python API on top of a compiled C++ shared object.

When you said this:

The problem is that my GUI slows way down where actions like mouse clicks
aren't recognized until the validation function finishes.

it sounds like the behaviour you get when the main thread is being blocked,
as if you were actually performing the verification in the GUI thread. Can
you say how you are accessing the fields in your GUI from the validation
thread?

I'm using a typical model-view-controller architecture where changes to one of the GUI fields signals a controller object that will then update the model object. The model object fires off a "modelChanged" signal that the controller picks up and will create and start a new validation thread if one is not already running. That validation thread accesses the model object. Is it possible, that since the model is shared between the GUI and validation thread, that would be a possible bottleneck? The model is a QObject subclass since it needs to be able to fire off the "modelChanged" signal.

Alternatively, I could imagine that, on some platforms, things that you do
in the validation thread might affect Qt indirectly. I have vague thoughts
about X11 here, but perhaps I'm just being paranoid. Which platform are
you running on?
Red Hat Enterprise Linux 5.

David
_______________________________________________
PyQt mailing list    [email protected]
http://www.riverbankcomputing.com/mailman/listinfo/pyqt
_______________________________________________
PyQt mailing list    [email protected]
http://www.riverbankcomputing.com/mailman/listinfo/pyqt

Reply via email to