使用多处理的python池.map对于分布式计算

2024-09-23 22:31:45 发布

您现在位置:Python中文网/ 问答频道 /正文

下一个代码使用5个worker池对50个输入文件名并行执行“someprogram”。怎么可能在 这台计算机和另一台计算机上的7,只使用标准库,如多处理。理想情况下,我会有一个list tuples(hostname,amountofworkers),它可以用来加速某些事情,也许还可以把它变成一个decorator,这样它就可以更容易地在“commandlinestuff”之类的方法上重用。(使用linux和Python2.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)

Tags: 代码inimport标准文件名计算机情况multiprocessing
2条回答

https://code.google.com/p/distributed-python-for-scripting/帮了我一个小把戏——什么也不安装,似乎是用python进行多处理的最短/最简单的方法

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

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

python wiki中的并行处理条目提供了一个很长的工具列表,这些工具具有各种优点和缺点。在

相关问题 更多 >