[PyKDE] Threading and multiple processors, any change?
Kevin Cureton
kevin at bang-splat.com
Thu Mar 1 20:18:09 GMT 2007
The application I've been working on (a client application that talks
with a server backended by a database) is far more responsive when I
run the multi-threaded version of the application. It does a lot of
concurrent accesses to data on the server (depending on the user
context). The multi-threading keeps the UI really responsive and
makes it easier to balance what parts of the application run faster
than others (simply by controlling how often the thread does its work
and what priority it gets).
Overall application performance increases on a multi-processor
machine. On my Mac Pro (4 cores) vs. my laptop (1 core), I see
substantial gains. However, I have a lot more memory and the
processors are faster (also PPC vs. Intel), so that will impact as
well. Like Phil and Matt point out, more processors allow for more
threads, which means the application can take advantage of threads
where needed.
The single-threaded version of the application is much less
responsive (even on the multi-processor machine). It is also a lot of
work to make sure the event loop gets proper time. I see a lot more
"pinwheels of death" on my Mac when running the single-threaded
version. Granted, we could probably optimize those instances
somewhat. The only reason we even bothered with a single-threaded
version was to keep things going until the deadlock problems was
resolved.
Summary: It is worthwhile using threads if you do a lot of
computation that takes time from the UI. The abstraction makes it
easy to move compute intensive code into a thread and then
communicate with the main GUI thread when needed (via signals or
events). You can even give your threads their own event loop, which
creates opportunities for a more refined communication between
threads in your application.
--kev
--
Kevin Cureton
Co-Founder
Mind The Gap, Inc.
kevin at animationpipeline.com
http://www.animationpipeline.com
On Mar 1, 2007, at 3:16 AM, Phil Thompson wrote:
> On Thursday 01 March 2007 10:47 am, V. Armando Sole wrote:
>> Hello,
>>
>> I just have a simple question (that does not imply a simple answer).
>>
>> With all the new options/possibilities recently discussed
>> concerning the
>> GIL handling, is it possible to profit of multiple processors in
>> Python
>> using QThreads thru PyQt4?
>
> The issues of a single GIL haven't gone away. The only difference
> is that the
> GIL is (probably) released much more frequently than it was before.
> The
> changes are to do with correctness (specifically deadlock
> avoidance) rather
> than performance.
>
> I don't know what the performance effect would be on a multi-
> processor. Matt
> said that he could run more threads but I don't know what hardware
> he has. I
> noticed a (small) degradation on my uni-processor - as would be
> expected.
>
> Phil
>
> _______________________________________________
> PyKDE mailing list PyKDE at mats.imk.fraunhofer.de
> http://mats.imk.fraunhofer.de/mailman/listinfo/pykde
More information about the PyQt
mailing list