多处理:将python函数转换为集群

时间:2012-05-17 19:39:44

标签: python multiprocessing cluster-computing

我想知道我是否可以通过网格/集群上的多处理包而不是在同一本地机器上执行/运行python函数。它将帮助我创建100个必须使用相同功能的作业,并通过DRMAA将它们分发到我们的本地集群。我不确定这对子进程/分叉是否可行或有意义。

任何示例或建议都会有所帮助。

PS:cross发布在python-list

谢谢! -Abhi

4 个答案:

答案 0 :(得分:1)

通常我们会使用像MPI这样的东西。

让仲裁者唯一的工作就是将任务分配给节点并检查节点的活跃性。(池)每个脚本应该是相同的,并包含您需要的所有代码并分发给所有节点。

设置完成后,为每个节点维护一个任务和参数队列(方法名称+参数),并将结果排队回仲裁器。

天真的例子:

def do_something(arg1, arg2):
  return arg1 + arg2

def get_next_task():
  task, args = server.retrieve_task()
  result = task(args)
  server.queue_result(result, node_id)

if __name__ == '__main__':
  if sys.argv[1] == '-a': # arbiter
    arbiter()
  if sys.argv[1] == '-n': # node
    run_node()

答案 1 :(得分:0)

multiprocessing模块主要是在本地计算机上运行。例外是remote managers

使用远程管理器的优点是除了标准的python安装之外你不需要任何额外的东西。但是你必须处理诸如将客户端代码分发给所有机器等问题。当然所有机器都需要安装python。

在群集等上运行有许多不同的选项。请参阅Python wiki上的parallel processing页面。

答案 2 :(得分:0)

Parallel Python可能就是您所需要的。

答案 3 :(得分:0)

另一个可能的选项是iPython。他们有一个很好的并行处理教程。