我有一个 python 脚本进行数据处理。在笔记本电脑上,可能需要 30 天才能完成。单个函数通过 for 循环执行数百次。每次将一个新参数输入到单个函数中。
我正在考虑设计一些并行/分布式计算方式来加速脚本:将for循环分成多个docker容器,每个容器负责for循环的一个子集,但参数不同。
这是一些伪代码:
def single_fun(myargs):
#do something here
data = file_data(myargs)
post_process(data)
def main_fun():
for i in range(100):
single_fun(i)
我的想法:
- docker 容器 1:取参数 1~5,运行函数 single_fun()
- docker 容器 2:取参数 6~10,运行函数 single_fun()
- docker 容器 n:取参数 n-5 ~ n,运行函数 single_fun()
- 每个 docker 容器完成后,我可以将每个容器的结果复制到主机硬盘驱动器。
我的问题:我的想法可行吗?这里有什么有用的反馈吗?谢谢。我如何实现这个想法?我可以利用任何框架或工具来完成这个想法吗?