我想知道是否可以通过网格/集群上的多处理程序包而不是在同一本地计算机上执行/运行python函数。它将帮助我创建100个需要使用相同功能的作业,并通过DRMAA将它们发布到本地群集。我不确定这是否可行,或者是否适用于儿童流程/分支。多处理:将python函数集成到集群
任何示例或建议都会有所帮助。
PS:cross posted on python-list
Thanks! -Abhi
我想知道是否可以通过网格/集群上的多处理程序包而不是在同一本地计算机上执行/运行python函数。它将帮助我创建100个需要使用相同功能的作业,并通过DRMAA将它们发布到本地群集。我不确定这是否可行,或者是否适用于儿童流程/分支。多处理:将python函数集成到集群
任何示例或建议都会有所帮助。
PS:cross posted on python-list
Thanks! -Abhi
通常为此我们使用类似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()
的multiprocessing
模块大多作品在本地机器上。例外是remote managers。
使用远程管理器的好处是,除了标准的python安装外,你不需要任何额外的东西。但是你必须处理诸如将客户代码分发给所有机器等问题。当然,所有的机器都需要安装python。
有许多不同的选项可用于运行集群等。请参阅Python wiki上的parallel processing页面。
我不认为这是*严格*真实:http://docs.python.org/2/library/multiprocessing.html?highlight=multiprocessing#using-a-remote-manager - 但它不是真的是什么' '多处理'是关于。 – TimStaley
好的。我会更新。 –
Parallel Python可能是你需要的。
另一种可能的选择是iPython。他们有一个很好的并行处理教程。
当我试图做这种性质的事情时,我最终使用SubProcess和ssh。不是一个很好的解决方案,但分叉到远程机器并不完全合理。 – Michael
本页内容:http://wiki.python.org/moin/ParallelProcessing – RickyA
@RickyA:很好的链接。由于有很多软件包,所以很高兴听到一些为人们工作过的使用过的案例。 -Abhi – Abhi