Comment voir si un fil est terminé? J'ai essayé ce qui suit, mais threads_list ne contient pas le fil qui a été démarré, même si je sais que le fil est toujours en cours d'exécution.
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
La clé est de démarrer le thread en utilisant thread, pas thread:
t1 = threading.Thread(target=my_function, args=())
t1.start()
Puis utiliser
z = t1.isAlive()
ou
l = threading.enumerate()
Vous pouvez également utiliser join ():
t1 = threading.Thread(target=my_function, args=())
t1.start()
t1.join()
# Will only get to here once t1 has returned.
Ceci est mon code, ce n'est pas exactement ce que vous avez demandé, mais vous le trouverez peut-être utile
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**************')