非守护进程python线程在完成任务后会退出吗?

时间:2013-07-22 16:50:08

标签: python multithreading io

上下文:我有一个简单的python脚本,每隔几秒就会将一堆文件写入s3(~70-100)。因为它的I / O绑定,我想线程化写入过程,以便脚本执行得更好。我正在使用threading来构建我的线程。

问题:由于我的线程是a)非守护进程,b)他们只有1个任务要执行(写一个文件),如果我遍历我的线程列表并调用{{1他们会完成任务并优雅地退出吗?我甚至需要在这里打电话给.join()还是在他们完成后退出?我相信 join()是去这里的方式,但因为我对python很新,我不知道我不知道的......

以下是一些简化的参考代码:

join()

来电:

buildOutput() #calls the section below 
for thread in threads:
   thread.join()
time.sleep(60)

其中FileWriter是执行编写的类。

1 个答案:

答案 0 :(得分:1)

Join确保主线程将等到加入的线程完成其任务。有一个很好的ascii艺术here

因此,当您的子线程执行I / O以防止任何意外行为时,最好使用join。