我想知道我是否可以通过网格/集群上的多处理包而不是在同一台本地机器上执行/运行 python 函数。它将帮助我创建 100 个必须使用相同功能的工作,并通过 DRMAA 将它们分流到我们的本地集群。我不确定这对于子进程/分叉是否可行或有意义。
任何示例或建议都会有所帮助。
PS:交叉张贴在python-list上
谢谢!-阿比
我想知道我是否可以通过网格/集群上的多处理包而不是在同一台本地机器上执行/运行 python 函数。它将帮助我创建 100 个必须使用相同功能的工作,并通过 DRMAA 将它们分流到我们的本地集群。我不确定这对于子进程/分叉是否可行或有意义。
任何示例或建议都会有所帮助。
PS:交叉张贴在python-list上
谢谢!-阿比
通常为此我们使用类似 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()
另一种可能的选择是iPython。他们有一个很好的并行处理教程。
并行 Python可能是您所需要的。