2012-05-17 43 views
3

我想知道是否可以通过网格/集群上的多处理程序包而不是在同一本地计算机上执行/运行python函数。它将帮助我创建100个需要使用相同功能的作业,并通过DRMAA将它们发布到本地群集。我不确定这是否可行,或者是否适用于儿童流程/分支。多处理:将python函数集成到集群

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

PS:cross posted on python-list

Thanks! -Abhi

+0

当我试图做这种性质的事情时,我最终使用SubProcess和ssh。不是一个很好的解决方案,但分叉到远程机器并不完全合理。 – Michael

+0

本页内容:http://wiki.python.org/moin/ParallelProcessing – RickyA

+0

@RickyA:很好的链接。由于有很多软件包,所以很高兴听到一些为人们工作过的使用过的案例。 -Abhi – Abhi

回答

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

multiprocessing模块大多作品在本地机器上。例外是remote managers

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

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

+0

我不认为这是*严格*真实:http://docs.python.org/2/library/multiprocessing.html?highlight=multiprocessing#using-a-remote-manager - 但它不是真的是什么' '多处理'是关于。 – TimStaley

+0

好的。我会更新。 –

0

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