检查一个线程 / 从列表中移除

5 浏览
0 Comments

检查一个线程 / 从列表中移除

我有一个继承自Thread的线程。代码看起来有点像这样:

class MyThread(Thread):
    def run(self):
        # 进行一些操作
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()
    # 进行一些操作

所以在我的伪代码中,我检查是否有任务(比如数据库等),如果有一些任务,且正在运行的线程少于5个,就创建新线程。

然后,我检查我的线程,这就是我卡住的地方,我可以使用.join(),但我的理解是,它会等待线程完成,所以如果它检查的第一个线程仍在进行中,它会等待直到完成,即使其他线程已经完成了...

那么有没有办法检查线程是否完成,然后将其删除?

例如

for my_thread in my_threads:
    if my_thread.done():
        # 处理结果
        del (my_threads[my_thread]) ?? 那样会起作用吗...

0