并行执行具有不同参数的相同Python程序

并行执行具有不同参数的相同Python程序,python,python-3.x,Python,Python 3.x,如何并行执行同一个python程序(我想到的是x10),唯一的区别是两个表示时间范围的输入参数?我需要它来进行一些数据处理,否则需要很长时间才能完成 我知道我可以在shell中通过逐个启动10个脚本来手动完成,但这似乎不是最“优雅”的解决方案+我还希望在“main”python程序中为每个程序动态定义参数 有办法吗?将脚本放在主方法中,如下所示: def main(args): a, b = args # do something if __name__ == '__main

如何并行执行同一个python程序(我想到的是x10),唯一的区别是两个表示时间范围的输入参数?我需要它来进行一些数据处理,否则需要很长时间才能完成

我知道我可以在shell中通过逐个启动10个脚本来手动完成,但这似乎不是最“优雅”的解决方案+我还希望在“main”python程序中为每个程序动态定义参数


有办法吗?

将脚本放在主方法中,如下所示:

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))

您可以在shell中尝试以下操作:

python main.py [1, 2, 3, 4, 5] &
python main.py [6, 7, 8, 9, 10]

谢谢Max,看起来干净简单。将在一分钟内尝试。为什么您指定了5对参数,但只有4个并行作业要运行?我有什么不对劲吗?游泳池有4个并行任务。因此,只能同时运行4个作业。因此,将要发生的是,执行前4个作业,第一个作业完成后,第五个作业就开始了。如果您有4个以上的内核,您可以将更高的数字传递到
啊,明白了:)谢谢:)嗨!我有类似的问题,除了我的主函数有11个参数。我有三组这样的11个参数,我希望将它们传递到主函数中,然后在不同的内核中启动它。我写了我的脚本,但它抛出了一个错误,说我传递的是一个参数,而不是11个参数。@merlinio。它在数据库中有多个select和insert语句,这些语句在大约150000个循环的每个周期中执行cycles@Merlin所有的选择都发生在表A中,所有的插入都发生在表B中。@Dennis你能用SQL写代码吗。不要脱离数据库的进程。@Merlin我知道最好将其全部保存在SQL中(数据库内部)。不幸的是,我还没有弄明白怎么做…@Dennis…你能删除这个问题吗,这是一个SQL问题。。。