2013-02-25 12 views
8

スレッドが完了したかどうかを確認する方法はありますか?私は以下を試しましたが、threads_listには、スレッドがまだ実行中であることがわかっていても、開始されたスレッドは含まれていません。Python:スレッドがまだ実行中です

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

関連する問題