2017-12-19 20 views
2
from threading import Thread 
import time 
class ThreadTest(): 

    def loop1(self): 
     for i in range(0, 100, 5): 
      print(i) 
      time.sleep(2) 

    def loop2(self): 
     for i in range(100, 210, 11): 
      print(i) 
      time.sleep(2) 

if __name__ == '__main__': 
    T1 = Thread(target=ThreadTest().loop1(), args=()) 
    T2 = Thread(target=ThreadTest().loop2(), args=()) 
    T1.start() 
    T2.start() 
    T1.join() 
    T2.join() 

Der obige Code führt die Methoden nacheinander und nicht gleichzeitig aus. Ich möchte einen Weg, auf dem ich zwei Methoden/Prozesse gleichzeitig ausführen kann.Wie zwei Threads gleichzeitig ausgeführt werden?

Antwort

3

Einfacher Fehler in Ihrem Code.

ersetzen:

T1 = Thread(target=ThreadTest().loop1(), args=()) 
T2 = Thread(target=ThreadTest().loop2(), args=()) 

mit:

T1 = Thread(target=ThreadTest().loop1, args=()) 
T2 = Thread(target=ThreadTest().loop2, args=()) 

Da Sie die Funktionen loop1() und loop2() im Hauptthread anrufen, sie werden der Reihe nach ausgeführt werden. Sie möchten auf die Funktionen zeigen, ohne sie tatsächlich aufzurufen, sodass die Unterthreads sie selbst aufrufen können.

Verwandte Themen