【问题标题】:Python parallel processing librariesPython 并行处理库
【发布时间】:2011-01-04 08:25:26
【问题描述】:

Python 似乎有 many different packages available 来帮助在基于 SMP 的系统上或跨集群进行并行处理。我有兴趣构建一个客户端服务器系统,其中服务器维护一个作业队列,客户端(本地或远程)连接并运行作业,直到队列为空。在上面列出的软件包中,推荐哪个以及为什么?

编辑:特别是,我编写了一个模拟器,它接受一些输入并处理一段时间。我需要从模拟中收集足够的样本来估计用户指定的置信区间内的平均值。为了加快速度,我希望能够在许多不同的系统上运行模拟,每个系统都会每隔一段时间向服务器报告他们收集的样本。服务器然后计算置信区间并确定客户端进程是否需要继续。在收集到足够的样本后,服务器会终止所有客户端模拟,根据过去的结果重新配置模拟,然后重复这些过程。

由于需要在客户端和服务器进程之间进行相互通信,我质疑批处理调度是否是一种可行的解决方案。抱歉,我一开始应该更清楚。

【问题讨论】:

  • 看起来您正在寻找调度程序?

标签: python cluster-computing scientific-computing


【解决方案1】:

鉴于您将您的问题标记为“科学计算”,并提到了一个集群,如果目标是开发并行应用程序,正如人们可能从标题中猜到的那样,某种 MPI 包装器似乎是显而易见的选择。再说一次,您问题中的文字表明您想要开发一个批处理调度程序。所以我真的不知道你问的是哪个问题。

【讨论】:

  • 客户端进程之间不会有交互,但是队列/服务器会根据各个客户端进程的结果而改变。我只需要能够跨多个工作站动态管理大量作业。
  • 哦。在这种情况下,大多数人所做的是他们拥有用于将许多作业提交到现有批处理调度程序(如 condor 或 SLURM)的脚本,解析输出并在必要时提交新作业等。这比编写自定义批处理调度程序要少得多。
【解决方案2】:

执行此操作的最简单方法可能只是在完成时将中间样本输出到单独的文件(或数据库),并让进程偶尔轮询这些输出文件以查看它们是否足够或是否需要更多工作提交。

【讨论】:

    【解决方案3】:

    现在围绕 map/reduce 框架 Hadoop 也有两个不同的 Python 包装器:

    http://code.google.com/p/happy/

    http://wiki.github.com/klbostee/dumbo

    Map/Reduce 是一个很好的开发模式,有很多解决常见问题模式的方法。

    如果您还没有集群,Hadoop 本身就不错,因为它具有完整的作业调度、跨集群(即 HDFS)的数据自动数据分布等。

    【讨论】:

      【解决方案4】:

      试试ParallelPython。看起来很容易使用,并且应该提供你想要的作业和队列接口。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-10-26
        • 2019-05-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多