Tengo un hilo que extiende el hilo. El código se ve un poco así;Python - comprobar en un hilo/eliminar de la lista
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
Así que aquí en mi código de pseudo puedo comprobar para ver si hay cualquier trabajo (como una base de datos, etc.) y si hay algunos puestos de trabajo, y si hay menos de 5 hilos de ejecución, crear nuevos temas.
Así que desde aquí, compruebo mis hilos y aquí es donde me quedo atascado, puedo usar .join() pero mi entendimiento es que - esto espera hasta que se termine así que si el primer hilo que revisa sigue siendo en progreso, luego espera hasta que finalice, incluso si los otros hilos están terminados ...
así que, ¿hay alguna manera de verificar si un hilo está hecho, y luego eliminarlo si es así?
por ejemplo
for my_thread in my_threads:
if my_thread.done():
# process results
del (my_threads[my_thread]) ?? will that work...
Gracias, pero ¿eso significa que se podría perder un resultado? Si un hilo ya no está Vivo, entonces necesito obtener los resultados. – Wizzard
Eso es verdad. He modificado mi respuesta para tener esto en cuenta. – Arlaharen
'is_alive()' en Python 2.6+ – trim