python使用多处理pool.map进行分布式计算

时间:2014-04-28 12:41:15

标签: python multiprocessing distributed-computing

下一个代码用于为50个输入文件名并行执行“someprogram”,使用5个工作池。怎么可以使用5名工人 这台计算机和7在另一台计算机上,只使用多处理等标准库。理想情况下,我会有一个列表元组(主机名,数量的工作者),它可以用来加速某些东西,并可能把它变成装饰器,这样它就可以更容易地在像“commandlinestuff”这样的方法上重复使用。 (使用linux和python 2.7)

import multiprocessing
import subprocess

def commandlinestuff(inputfilename):
    p = subprocess.Popen("someprogram "+inputfilename, shell=True)
    p.wait()

inputfilenames = ["something"+str(i).zfill(2)+".in" for i in range(50)]
p = multiprocessing.pool(5)
p.map(commandlinestuff, inputfilenames)

2 个答案:

答案 0 :(得分:0)

听起来你正在尝试重新发明pyro,它本身是用纯python编写的,但目前还不是标准库的一部分。

基本上,您需要在远程计算机上运行的服务器接受连接,接收要执行的pickle对象(可能还有一些数据),执行它并回发结果。您还需要本地计算机上的客户端来执行帖子,收集结果并可能进行一些负载平衡。

python wiki中的并行处理条目提供了一长串工具来执行此类具有各种优缺点的工具。

答案 1 :(得分:0)

https://code.google.com/p/distributed-python-for-scripting/为我做了诀窍 - 无需安装,似乎是在python中进行多处理的最短/最简单方法