2013-02-25 90 views
8

मैं कैसे देख सकता हूं कि धागा पूरा हो गया है या नहीं? मैंने निम्नलिखित की कोशिश की, लेकिन threads_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