Ereignisse aus Threads abfragen und AKtion ausführen

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
dkell
User
Beiträge: 12
Registriert: Mittwoch 12. März 2008, 09:40

Hallo

Ich bin am erstellen eines Programms, welches verschiedene Threads starten soll (u.a. auf einer RS232 Schnittstelle lauschen ob Daten ankommen) und je nachdem ob ein Ereignis eintritt eine Funktion ausführt. Wie kann ich Ereignisse aus dem Thread an ein Hauptprogramm zurückgeben und in diesem entsprechend reagieren?

Habe Beispielhaft hier schon mal was erstellt:

Code: Alles auswählen


import threading
import time

class t1(threading.Thread):
    def __init__(self,dt,nr):                # neuer Konstruktor
        threading.Thread.__init__(self)      # Aufruf des ererbten Konstruktors
        self.dt = dt
        self.nr = nr

    def run(self):
        i = 1
        while True:
            i = i + 1
            print "Thread1: ",i
            time.sleep(self.dt)
            if self.nr == i:
                print "Ereignis thread 1 erreicht, mache etwas"
                erg = "t1.xyz"
                !! hier Erreignis / Ergebnis an Hauptprogramm schicken


class t2(threading.Thread):
    def __init__(self):                # neuer Konstruktor
        threading.Thread.__init__(self)      # Aufruf des ererbten Konstruktors

    def run(self):
        i = 115
        while True:
            i = i + 1
            print "Thread2: ", i
            time.sleep(0.5)
            if i == 130:
                print "Ereignis thread 2 erreicht, mache etwas"
                state = "t2.OK"
                !! hier Erreignis / Ergebnis an Hauptprogramm schicken

def action(str):
    # Hier irgendeine Aktion
    print str

print 'Start Hauptprogramm'
p1 = t1(1,15)                         # neuer Thread 1
p1.start()                                    # Start des Threads 1
p2 = t2()
p2.start()

# Hier möchte ich die Ereignisse
while True:
    if ?? Ergebnis ?? == 't1.xyz':
        action('OK, Ergebnis war xyz')

    if ?? Ergebnis ?? == 't2.OK':
        action('OK, Ergebnis war xyz')

Vielen dank
Benutzeravatar
jbs
User
Beiträge: 953
Registriert: Mittwoch 24. Juni 2009, 13:13
Wohnort: Postdam

Wie wäre es mit [mod]queue[/mod]
[url=http://wiki.python-forum.de/PEP%208%20%28%C3%9Cbersetzung%29]PEP 8[/url] - Quak!
[url=http://tutorial.pocoo.org/index.html]Tutorial in Deutsch[/url]
Antworten