2016-05-23 11 views
0

Diese 3 Funktionen funktionieren, aber die letzte muss warten, bis die erste und zweite ausgeführt werden. Ich kann time.sleep() verwenden, aber ich denke, das ist nicht der richtige Weg. Wie repariere ich es?Wie wird die dritte Funktion ausgeführt, nachdem die zweite Funktion ausgeführt wurde?

def convert_and_save(self): 
    self.open() 
    time.sleep(5) 
    self.convertThread.start() 
    time.sleep(5) 
    self.saveThread.start() 

def convert_and_save(self): 
    self.open() 
    self.convertThread.start() 
    self.saveThread.start() 
    self.convertThread.join() 
    self.saveThread.join() 

Fehler: AttributeError: 'ConvertThread' object has no attribute 'join'


Das funktioniert aber suspendig GUI :(

def convert_and_save(self): 
    self.open() 
    self.convertThread.start() 
    while self.convertThread.isFinished() == False: 
     time.sleep(0.1) 
    self.saveThread.start() 
+0

Bitte einen entsprechenden Code in Ihrer Frage enthalten. – khelwood

+0

Frage ist Update dieses Teils des Codes wo ist das Problem. – Luk

+0

Mögliche Duplikate von [Python Multithreading warten, bis alle Threads beendet] (http://stackoverflow.com/questions/11968689/python-multithreading-wait-ill-all-threads-finished) –

Antwort

0

Ich denke, man kann

verwenden
self.convertThread.join() 
self.saveThread.join() 

warten, bis beide Threads ihre Ausführung beendet haben.

Werfen Sie einen Blick auf help("threading.Thread") für mehr Dinge, die Sie mit Threads tun können.

Ganze Code:

def convert_and_save(self): 
     self.open() 
     time.sleep(5) 
     self.convertThread.start() 
     time.sleep(5) 
     self.saveThread.start() 

     self.convertThread.join() 
     self.saveThread.join() 

     # This is executed when both threads stopped 
+0

Thak Sie, aber ich möchte nicht mit' time.sleep' Funktion. Jetzt habe ich Fehler: 'AttributeError: 'ConvertThread' Objekt hat kein Attribut 'Join'' Frage wird aktualisiert. – Luk

+0

Jetzt sehe ich, was @Khelwood bedeutet. Ich habe ein self.convertThread als threading.Thread-Objekt angenommen. Das scheint nicht der Fall zu sein. Was kann ein ConvertThread? Bitte überlegen Sie, Ihre Frage neu zu schreiben. – User

+0

'ConvertThread' konvertiert viele Zeichenfolgen (ändert sich). Und deshalb muss das Speichern ('saveThread') warten, bis' ConvertThread' nicht fertig ist. Frage ist aktualisiert - aber dieser Code auch GUI anhalten. – Luk

Verwandte Themen