2016-08-05 41 views
0

ich einen Code so etwas wie dies habe,Python Threads Sammlung

import threading 

class Mythread(threading.Thread): 
     def __init__(self): 
      threading.Thread.__init__(self) 
     def run(self): 
      print('do some processing') 

if __name__=='__main__': 
     while Ture: 
     val = raw_input('next thread') 
     t = MyThread() 
     t.start() 
     t.join() 

Die Frage ist, wie kann ich mit Hauptfunktion weitermachen, ohne die Haupt blockiert, weil t.join() das Haupt aufhören, bis t nicht beendet?

Antwort

0

Sie sollten Code in das "Code" -Tag stecken, sonst ist es nicht wirklich lesbar. Und Sie müssen nur so etwas tun.

if name == 'main': 
    #Thread creation 
    allThreads = [] 
    while True: 
     val = raw_input('next thread') 
     newThread = MyThread() 
     newThread.start() 
     allThreads.append(newThread) 

    #You can do something here 

    #Waiting for all threads to stop 
    for thread in allThreads: 
     thread.join() 
+0

Danke, Das Hauptprogramm immer in der Schleife bleiben, wie es geht die #Waiting für alle Threads zu stoppen ?? Ich möchte, dass die while-Schleife (in main) für immer bleibt und die Threads zum Stoppen sammeln muss. innerhalb der While-Schleife. –

+0

Was ist Ihre Bedingung, um die Threads zu stoppen? – Sygmei

+0

Eigentlich, was ich will, ich möchte nur den Thread zu starten, aber nicht wollen, dass es zurück zu Haupt. Wenn also die Aufgabe in diesem Thread beendet wurde, wird dieser Thread freigegeben. –