2013-02-25 5 views
8

스레드가 완료되었는지 어떻게 알 수 있습니까? 나는 다음을 시도했지만 thread_list는 스레드가 여전히 실행 중임을 알았을 때 시작된 스레드를 포함하지 않습니다.파이썬 : 스레드가 여전히 실행 중입니까

import thread 
import threading 

id1 = thread.start_new_thread(my_function,()) 
#wait some time 
threads_list = threading.enumerate() 
# Want to know if my_function() that was called by thread id1 has returned 

def my_function() 
    #do stuff 
    return 

답변

17

의 핵심은 스레드를 사용하여 스레드를 시작하는 것입니다하지 스레드 :

t1 = threading.Thread(target=my_function, args=()) 
t1.start() 

그런 다음

z = t1.isAlive() 

또는

l = threading.enumerate() 
또한 조인을 사용 할 수

(사용) :

t1 = threading.Thread(target=my_function, args=()) 
t1.start() 
t1.join() 
# Will only get to here once t1 has returned. 
0

이 그것은 당신이 무엇을 요구 정확히 아니지만, 어쩌면 당신은 유용

import time 
import logging 
import threading 

def isTreadAlive(): 
    for t in threads: 
    if t.isAlive(): 
     return 1 
    return 0 


# main loop for all object in Array 

threads = [] 

logging.info('**************START**************') 

for object in Array: 
    t= threading.Thread(target=my_function,args=(object,)) 
    threads.append(t) 
    t.start() 

flag =1 
while (flag): 
    time.sleep(0.5) 
    flag = isTreadAlive() 

logging.info('**************END**************') 
+1

귀하의 코드는 그렇지 않은 것도있다 발견 할 것이다, 내 코드입니다. 당신은 질문에 대답해야합니다. 제안하고 싶다면 코멘트에 추가하십시오. 죄송합니다. 더 많은 평판이 필요합니다. 그때까지, 당신이 당신의 대답이 포인트 *와 설명력이 있다고 느끼는 질문을 찾으십시오. – rajuGT

관련 문제