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

标签 python parallel-processing multiprocessing

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

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

如果这是不可能的,我希望至少能够开始Process来自中央脚本的任何节点上的实例,每个节点具有不同的参数。

最佳答案

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

您将需要一个框架来处理跨多个节点的进程生成并提供处理器之间的通信机制。 (几乎是 MPI 所做的)。

参见 Parallel Processing on the Python wiki 上的页面获取有助于集群计算的框架列表。

从列表中,pp , jug , pyrocelery看起来是明智的选择,尽管我不能亲自担保任何选择,因为我对它们中的任何一个都没有经验(我主要使用 MPI)。

如果易于安装/使用很重要,我将从探索 jug 开始。 .它是 easy to install , supports common batch cluster systems , 看起来 well documented .

关于python - 使用多处理模块进行集群计算,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34056342/

相关文章:

javascript - 使用 Javascript node.js 如何并行处理 For 循环?

python-3.x - 我如何从线程中的每个请求中获取新 ip?

python - 2个数字列表之间的余弦相似度

C#:python 文件中的类反射机制(获取函数、参数等)

python - matplotlib qt imshow 动画

hadoop - 可以使用 Map Reduce 和 Hadoop 并行处理批处理作业吗?

c# - 在 C# 中构建基于时间的异步服务的好方法

python - 如何从加载缓慢的网站中抓取表数据

python - 交互模式下的多处理中断

python - 我可以在 fork 新进程之前初始化tornado IOLoop.instance吗?