我对使用计算机集群运行Python程序感兴趣。过去我一直在使用Python MPI接口,但是由于在编译/安装这些接口时遇到困难,我更喜欢使用内置模块(例如Python的多处理模块)的解决方案。
我真正想做的就是设置一个multiprocessing.Pool跨整个计算机集群的实例,并运行一个Pool.map(...)。这是可能/容易做到的事情吗?
multiprocessing.Pool
Pool.map(...)
如果这不可能,那么我至少希望能够Process从中央脚本在每个节点上为每个节点使用不同参数来启动实例。
Process
如果通过集群计算来表示分布式存储系统(多个节点而不是SMP),那么Python的多重处理可能不是合适的选择。它可以产生多个进程,但它们仍将绑定在单个节点内。
您将需要一个框架来处理跨多个节点的进程,并为处理器之间的通信提供一种机制。(几乎是MPI所做的)。
有关有助于集群计算的框架列表,请参见Python wiki上的“并行处理”页面。
从列表中看,pp,jug,pyro和celery似乎是明智的选择,尽管由于我对它们中的任何一个都没有经验(我主要使用MPI),所以我不能亲自担保。
如果安装/使用的简便性很重要,那么我将从探索开始jug。它易于安装,支持常见的批处理群集系统,并且文件记录良好。
jug