使用多处理模块进行集群计算

ast*_*rog 54 python parallel-processing multiprocessing

我对使用计算机集群运行Python程序感兴趣.我过去一直在使用Python MPI接口,但由于编译/安装这些接口有困难,我更喜欢使用内置模块的解决方案,例如Python的多处理模块.

我真正想做的只是设置一个multiprocessing.Pool跨越整个计算机集群的实例,并运行一个Pool.map(...).这是可能/容易做的事情吗?

如果这是不可能的,我希望至少能够Process从中央脚本的任何节点上启动实例,每个节点具有不同的参数.

Sha*_*hin 46

如果通过集群计算你的意思是分布式内存系统(多个节点而不是SMP),那么Python的多处理可能不是一个合适的选择.它可以生成多个进程,但它们仍将绑定在单个节点中.

您需要的是一个框架,用于处理跨多个节点的流程,并提供处理器之间通信的机制.(几乎是MPI所做的).

请参阅Python wiki上的并行处理页面,以获取有助于集群计算的框架列表.

从列表中,pp,jug,pyro芹菜看起来像是明智的选择,虽然我不能亲自担保,因为我没有任何经验(我主要使用MPI).

如果安装/使用的简便性很重要,我会先探索一下jug.它易于安装,支持常见的批处理集群系统,并且具有良好的文档记录.

  • 我写了水壶(谢谢你的客气话).我将补充说,该模块也得到了很好的支持.如果您发现任何错误,它们将很快得到修复(通常<24小时). (16认同)
  • Python多处理管理器可以在多个系统之间进行通信,而不仅仅是在系统内.请参阅:http://eli.thegreenplace.net/2012/01/24/distributed-computing-in-python-with-multiprocessing/ (3认同)

chm*_*lig 14

在过去,我使用Pyro非常成功地完成了这项工作.如果您打开移动代码,它将自动通过线路发送节点尚未拥有的所需模块.很漂亮.