J'ai un fil qui prolonge le filetage. Le code ressemble un peu à ceci;Python - vérification d'un fil/suppression de la liste
class MyThread(Thread):
def run(self):
# Do stuff
my_threads = []
while has_jobs() and len(my_threads) < 5:
new_thread = MyThread(next_job_details())
new_thread.run()
my_threads.append(new_thread)
for my_thread in my_threads
my_thread.join()
# Do stuff
Voici donc dans mon code pseudo Je vérifie pour voir s'il y a des emplois (comme un db etc) et s'il y a des emplois, et s'il y a moins de 5 threads en cours d'exécution, créer de nouveaux threads. Donc, à partir de là, je vérifie mes threads et c'est là où je suis coincé, je peux utiliser .join() mais je crois comprendre - cela attend alors qu'il soit terminé, donc si le premier thread qu'il vérifie est encore en cours, il attend alors que cela soit fait - même si les autres threads sont terminés ...
alors existe-t-il un moyen de vérifier si un thread est fait, puis retirez-le si oui?
par exemple
for my_thread in my_threads:
if my_thread.done():
# process results
del (my_threads[my_thread]) ?? will that work...
Merci, mais est-ce que cela signifie qu'un résultat pourrait être perdu? Si un thread n'est plus vivant alors j'ai besoin d'obtenir les résultats. – Wizzard
C'est vrai. J'ai modifié ma réponse pour en tenir compte. – Arlaharen
'is_alive()' en Python 2.6+ – trim