在Python中同时调用具有不同参数的函数

时间:2014-02-20 13:08:12

标签: python parallel-processing multiprocessing

我找到了很多例子,但不是我的。请帮帮我:

我有一个需要参数(URL)的函数,我需要同时多次调用这个函数(使用不同的参数)来得到类似的东西:

 function started with param: rsync://.... (1)
 function started with param: rsync://.... (2)
 function started with param: rsync://.... (3)
 ....
 function (k) with param rsync://....has finished
 .....
 function started with param: rsync://.... (n)
 function (1) with param rsync://....has finished
 ....
 function (n) with param rsync://....has finished

这些函数是独立的,它们不与任何常见对象或类似的东西(不包括导入)交互。我需要同时运行它们(其中n个)。它们如何完成的顺序并不重要。

2 个答案:

答案 0 :(得分:2)

使用Threads

例如,您可以使用:

import threading
my_thread = threading.Thread(target=your_function, args=(), kwargs={})  # This can go inside a loop, providing different args each time.
my_thread.start()

访问答案顶部的链接以获取更多信息。

答案 1 :(得分:1)

如果你想对这个函数的内容保持自由,可以使用线程作为Raydel提及,或者如果函数应该是CPU绑定而不是IO绑定,则使用multiprocessing

如果你的任务只是调用子进程,你可以

  • 使用sp = subprocess.Popen()
  • 启动子流程
  • 保留此sp,一种句柄
  • 然后他们并行运行
  • poll()他们直到完成
  • 然后你就知道他们什么时候结束了。