2016-10-06 2 views
1

이 쉬운/어려운 질문에 도움을 받고 싶습니다.파이썬을 실행할 스레드 수를 처리하는 방법은 무엇입니까?

저는 파이썬 스레드로 작업하고 있습니다. 이건 내 코드입니다 :

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

이 코드를 사용하면 매번 두 개의 클래스를 사용하는 함수를 만들 수 있습니다. 전화하다 루프에서 ... –

관련 문제