Seite 1 von 1

OOP und Threading, wie greife ich darauf zu?

Verfasst: Samstag 15. März 2008, 17:17
von Andyh
Hallo

Ich hoffe ja mal das es möglich ist, dass was ich malwieder will:

Code: Alles auswählen

# -*- encoding: latin1 -*- 

import threading 
import time
import ausgabemodul
import Tkinter as tk
    
class simulator(threading.Thread): 
    
    def __init__(self): 

        threading.Thread.__init__(self)
        
    def run(self):
        def hallo():
            print "Hallo"
        
        
class andy(threading.Thread): 
    
    def __init__(self): 

        threading.Thread.__init__(self) 
                    
    def run(self):
        a = simulator()
        b = a.run()
        b.hallo()
              
bla = simulator() 
bla.start()
bla1 = andy() 
bla1.start()
Ich möchte vom Thread "andy" auf die Funktion "hallo" im "simulator" Thread zugreifen.

Ist mein Ansatz schon mal in die richtige richrung oder muss ich das ganz anders machen?

Für Hilfe währe ich sehr dankbar!

Re: OOP und Threading, wie greife ich darauf zu?

Verfasst: Samstag 15. März 2008, 17:42
von EyDu
Naja, fast.

Mein Code ist jetzt ungetestet, aber sollte so in etwa funktionieren. Schau dir in der Manual aber auf jeden Fall mal "Event", "Lock" und "Queue" an, das sind die richtigen Strukturen, um zwischen zwei Threads zu kommunizieren.

Edit: Und wo ich gerade den Import von Tkinter sehe: Such noch mal ein weing im Forum nach Threading und GUI, da gibt es nämlich noch so einige Besonderheiten zu beachten.

Code: Alles auswählen

# -*- encoding: latin1 -*- 

import threading 
import time
import ausgabemodul
import Tkinter as tk
    
class simulator(threading.Thread):    
    def run(self):
        ....
    
    def hallo():
        print "Hallo"
        
        
class andy(threading.Thread): 
    def __init__(self, b):
        self.b = b
        threading.Thread.__init__(self) 
                    
    def run(self):
        self.b.hallo()
              
bla = simulator() 
bla.start()
bla1 = andy(bla) 
bla1.start()

Verfasst: Samstag 15. März 2008, 17:55
von Andyh
Hallo

Danke für die Antwort!

Dein Code läuft.

Gruß
Andyh