使用多处理模块进行集群计算
我有兴趣使用计算机群集来运行Python程序。 我过去一直在使用Python MPI接口,但是由于编译/安装这些接口有困难,我宁愿使用内置模块(如Python的多处理模块)的解决scheme。
我真正想要做的只是build立一个multiprocessing.Pool
实例,跨越整个计算机集群,并运行一个Pool.map(...)
。 这是可能的/容易做的事吗?
如果这是不可能的,我希望至less能够从每个节点的不同参数的中央脚本启动任何节点上的Process
实例。
如果通过集群计算来表示分布式内存系统(多个节点而不是SMP),那么Python的多处理可能不是一个合适的select。 它可以产生多个进程,但是它们仍然会绑定在单个节点中。
你需要的是一个处理跨越多个节点的进程的spawn的框架,并且提供处理器之间的通信机制。 (几乎是MPI所做的)。
请参阅Python维基上的并行处理页面,以获取有助于集群计算的框架列表。
从名单上看, pp , jug , pyro和芹菜看起来像明智的select,虽然我不能亲自担保,因为我没有任何经验(我主要使用MPI)。
如果安装/使用的方便性很重要,我会先从jug
开始。 它安装简单 , 支持常见的批处理集群系统 ,看起来很好的文档 。
在过去,我使用Pyro来做到这一点非常成功。 如果您打开移动代码,它将自动发送节点所没有的必需的模块。 相当漂亮。