我如何并行执行相同的python程序(我在考虑x10),唯一的区别是两个输入参数代表一个时间范围?我需要它进行一些数据处理,否则将花费很长时间才能完成
我知道我可以通过逐个启动10个脚本在shell中手动完成它,但它似乎不是最“优雅”的解决方案+我也很乐意在“动态”中为每个程序定义参数主要的“python程序。
有办法吗?
答案 0 :(得分:2)
将您的脚本包含在main方法中,如下所示:
def main(args):
a, b = args
# do something
if __name__ == '__main__':
args = parse_arguments()
main(args)
然后您可以将第二个脚本与multiprocessing.Pool
一起使用,以使用不同的参数运行main方法。
from myscript import main
from multiprocessing import Pool
a = [1, 2, 3, 4, 5]
b = [6, 7, 8, 9, 10]
if __name__ == '__main__':
pool = Pool(4) # four parallel jobs
results = pool.map(main, zip(a, b))
答案 1 :(得分:0)
您可以在shell中尝试以下操作:
python main.py [1, 2, 3, 4, 5] &
python main.py [6, 7, 8, 9, 10]