【问题标题】:python using multiprocessing pool.map for distributed computingpython使用多处理pool.map进行分布式计算
【发布时间】:2014-04-28 12:41:15
【问题描述】:

接下来的代码使用 5 个工作人员池为 50 个输入文件名并行执行“someprogram”。怎么可能用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)

【问题讨论】:

    标签: python multiprocessing distributed-computing


    【解决方案1】:

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

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

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

    【讨论】:

    • 遗憾的是,只有标准库可用 -
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-01-30
      • 1970-01-01
      • 2013-10-02
      • 1970-01-01
      • 2021-08-28
      • 2019-12-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多