PyQt Signal & Slots

16/01/2008 - 11:10 von Martin Gysel | Report spam
Hallo

Ich beschàftige mich seit kurzem mit python und pyqt. in meiner
applikation will ich mehrere threads einsetzten, welche in einer kette
zusammengeschalten sind.

thread0(daten erfassen) -> thread1 -> thread2 -> ... -> threadX -> gui

empfiehlt es sich hier die daten mittels signal&slot durch die einzelnen
threads zu schleussen oder ist es besser dass ganze mit mehreren fifo
queues zu lösen oder gibts es da noch elegantere methoden?
sind signal/slot überhaupt effizient für datenaustausch (nicht nur
click'event) zwischen einzelnen threads?

danke

g
martin
 

Lesen sie die antworten

#1 Diez B. Roggisch
16/01/2008 - 12:09 | Warnen spam
Martin Gysel wrote:

Hallo

Ich beschàftige mich seit kurzem mit python und pyqt. in meiner
applikation will ich mehrere threads einsetzten, welche in einer kette
zusammengeschalten sind.

thread0(daten erfassen) -> thread1 -> thread2 -> ... -> threadX -> gui

empfiehlt es sich hier die daten mittels signal&slot durch die einzelnen
threads zu schleussen oder ist es besser dass ganze mit mehreren fifo
queues zu lösen oder gibts es da noch elegantere methoden?
sind signal/slot überhaupt effizient für datenaustausch (nicht nur
click'event) zwischen einzelnen threads?



In Qt3 waren sie definitiv nicht das mittel der Wahl, da nicht thread-safe.
Und in Qt4 sind sie es zwar wohl deutlich mehr, aber ich bezweifele das sie
fuer dein Szenario gegeegnet sind. Denn signals sind events, und events
brauchen einen event-loop. D.h. du haettest also einen Qt-event-loop in
jedem thread. Und das klappt denke ich nicht. Was inzwischen geht ist aus
anderen threads heraus signale an QObjects zu schicken die im mainloop
laufen.

Fuer deine Anwendung also ganz klar queues. Abgesehen davon das das noch
einen anderen, entscheidenden Vorteil hat: der Code bleibt unabhaengig von
Qt.

Diez

Ähnliche fragen