上下文:我有一个简单的 python 脚本,每隔几秒就会将一堆文件写入 s3 (~70-100)。因为它的 I/O 绑定,我想线程化写入过程,以便脚本执行得更好。我threading
用来构建我的线程。
问题:由于我的线程是 a) 非守护进程和 b) 它们只有 1 个任务要执行(写入文件),如果我遍历我的线程列表并调用.join()
它们,它们会完成任务并优雅地退出吗?我什至需要join()
在这里打电话还是他们完成后会退出?我相信join() 是去这里的方式,但由于我对 python 很陌生,我不知道我不知道什么......
这里有一些简化的代码供参考:
buildOutput() #calls the section below
for thread in threads:
thread.join()
time.sleep(60)
调用:
for item in out[fileRoot]:
#write individiual files
key = findKey(item, FILE_KEY)
full_key = FILE_PATH + str(key) + FILE_TYPE
t = FileWriter(item, full_key)
t.start()
threads.append(t) #global threads list for the script
其中 FileWriter 是进行写入的类。