У меня есть поток, который расширяет Thread. Код выглядит примерно так:
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
Итак, здесь, в моем псевдокоде, я проверяю, есть ли какие-либо задания (например, db и т.д.), и если есть несколько заданий, и если работает менее 5 потоков, создайте новые потоки.
Итак, теперь я просматриваю свои потоки, и вот где я застрял, я могу использовать .join(), но я понимаю, что это значит, что это ждет, пока оно не закончится, поэтому если первый поток, который он проверяет, все еще находится в прогресс, тогда он ждет, пока это не будет сделано, даже если остальные потоки закончены....
так есть ли способ проверить, выполняется ли поток, а затем удалить его, если это так?
например,
for my_thread in my_threads:
if my_thread.done():
# process results
del (my_threads[my_thread]) ?? will that work...