2016-10-06 5 views
1

Я хочу, чтобы вы помогли с этим легким/трудным вопросом.Как обрабатывать количество потоков для запуска python?

Я работаю с потоками python. Это мой код:

import threading 
#import class1, class2, class3 . . . 

def main(): 

    list = [class1(), class2(), class3() . . .] 
    for obj in list: 
     t = threading.Thread(target=obj.run,) 
     t.start() 

if __name__ == "__main__": 
     main() 

Я хочу только выполнение двух из них на первый, и когда один из них заканчивает затем третий и так далее

Есть ли способ сделать это?

заранее спасибо

ответ

0

Вы должны использовать присоединиться метод

def main(): 

    list = [class1(), class2()] #only two 
    waiting_list = [] 
    for obj in list: 
     t = threading.Thread(target=obj.run,) 
     t.start() 
     waiting_list.append(t) 
    for t in waiting_list: 
     print("Waiting for %s" % t) 
     t.join() 
     print("%s done!" % t) 
    list = [class3(), class4()] #more stuff 

    for obj in list: 
     t = threading.Thread(target=obj.run,) 
     t.start() 
    #and so on 

Также смотрите пакет concurrent.futures для пула более высокого уровня потока, чтобы избежать для петель

+0

Это может быть хорошим решением к настоящему времени, но, похоже, что потоки будут идти два на два ... нет проблем, я буду использовать его, спасибо – darthVader

+0

Вы можете использовать этот код для создания функции, которая принимает по два класса каждый раз и вызов это из цикла ... –

Смежные вопросы