2016-10-21 1 views
0

Blick auf diesen Code zu erstellen: das istPython3.4 Eine Suche über mul-Themen

def w(i): 
    print("%s start" % i) 
    time.sleep(10) 
    print("end %s waiting" % i) 


class ss(threading.Thread): 
    def __init__(self, i): 
     threading.Thread.__init__(self) 
     self.i = i 

    def run(self): 
     print("%s start" % self.i) 
     time.sleep(10) 
     print("end %s waiting" % self.i) 

c=ss("c") 
c.start() 
d=ss("d") 
d.start() 

threading.Thread(w("a")).start() 
threading.Thread(w("b")).start() 

das Ergebnis:

c start 
a start 
d start 
end c waiting 
end a waiting 
end d waiting 
b start 
end b waiting 

Vielleicht haben Sie schon kennen meine puzzle.I Thread erstellt über " threading.Thread“-Funktion, ist es nicht laufen synchronously.Is es globale Funktion nur nur ein Thread laufen eine Zeit? ich benutze python3.4

Antwort

1
threading.Thread(w("a")).start() 

bedeutet execut e w("a") und übergeben Ergebnis an einen threading.Thread() Konstruktor. Anstatt ein Callable-Objekt zu übergeben, rufen Sie es auf. Sie müssen die Funktion und ihre Argumente trennen:

threading.Thread(target = w, args = ["a"]).start() 
+0

Vielen Dank.Dies ist der Grund. –

Verwandte Themen