我想在我的代码中实现一些线程,乍一看似乎运行良好。在检查了我的结果之后,我注意到该代码似乎不是在等待线程完成,而是只要它们开始,它就会继续执行其余的代码。
def start_local_process(pair):
try:
name = 'name'
some_other_function(name)
except:
print("Failed")
print("Starting a total of %d threading processes." %len(some_list))
for element in some_list:
t= Thread(target=start_local_process, args=(pair,))
t.start()
print("Closed all threading processes for " + element + "!")
我可以看到它确实为some_list中的每个元素启动了线程处理,这正是我想要的-为每个元素并行执行。但是,启动它们后,我会立即得到最后一条输出消息,我更希望的是,如果它等待它们完成,然后打印一条消息,使其完成。有办法吗?
更新: 因此,这里是link,其中给出了部分解决方案。回答一个线程是否仍处于活动状态的函数是 .isAlive()
使用此功能,我可以知道线程是否仍处于活动状态,但是在所有功能都返回TRUE之前,重新检查同一件事的一种巧妙方法是什么?
答案 0 :(得分:0)
假设您将线程保存到列表中,则可以执行以下操作来检查所有线程是否都完成了工作:
finished = all(thread.isAlive() for thread in thread_list)
while not finished:
finished = all(thread.isAlive() for thread in thread_list)
print('All task finished...')