为简化起见,假设我要从S3将多个大文件下载到本地计算机上。
def get_file(name):
# pull from S3 and returns DataFrame
return df
if __name__ == "__main__":
df1 = get_file("large_file_1.csv")
df2 = get_file("large_file_2.csv")
df3 = get_file("large_file_3.csv")
,我想重构该代码以使这些调用成为非阻塞(即,立即开始从S3中拉出所有调用,然后等待它们完成)。我的第一个本能是将线程模块与类似
一起使用from threading import Thread
if __name__ == "__main__":
t1 = Thread(target=get_file,args=("large_file_1.csv",))
t2 = Thread(target=get_file,args=("large_file_2.csv",))
t3 = Thread(target=get_file,args=("large_file_3.csv",))
t1.start()
t2.start()
t3.start()
t1.join()
t2.join()
t3.join()
但是,Thread
没有提供一种将目标函数的返回值分配给变量的方法。这样做的首选方式是在Python中?