ich arbeite zum ersten Mal intensiv mit Threads und hab da so meine Probleme.
Genauer gesagt geht es um die Synchronisation der Threads mittels des Event-Objekts.
Hier mein Problem: Ich habe eine Hauptklasse für meine GUI und eine Klasse, die ich als Thread starten möchte, um da dann später Sounds mit pyaudio aufzunehmen.
Das Thread starten ist auch nicht sonderlich mein Problem, sondern mehr das Beenden. Also es funktioniert, aber ich verstehe nicht, wieso, die Lösung war mehr Try and error.
Hier grob mein Code:
Code: Alles auswählen
class GUIFrame(Frame):
def record(self):
self.rec.startRec()
def stop(self):
self.rec.stopRec()
def createWidgets(self):
self.start = Button(self)
self.start["text"] = "Start"
self.start["command"] = self.record
self.start.grid(row=0, column=0)
self.stop = Button(self)
self.stop["text"] = "Stopp"
self.stop["command"] = self.rec.stopRec
self.stop.grid(row=0, column=1)
def __init__(self, master=None):
Frame.__init__(self, master)
self.rec = Recorder()
self.rec.start()
self.pack()
self.createWidgets()
BitRate16 = pyaudio.paInt16
class Recorder(threading.Thread):
def __init__(self):
threading.Thread.__init__(self)
self.audio = pyaudio.PyAudio()
self.recEvent = threading.Event()
self.recording = False
def startRec(self):
self.recEvent.set()
def stopRec(self):
print "stop"
self.recEvent.clear()
def record(self, chunkSize, format, rate):
while True:
self.recEvent.wait()
print "aufnehmen..."
def run(self):
self.recording = True
self.record(1024, BitRate16, 44100)
Bin für jede Hilfe dankbar und hoffe, das alles detailliert genug geschildert ist...
