使用 python 在多个服务器上分发作业

Distributing jobs over multiple servers using python

我目前有一个可执行文件,当 运行 使用我服务器上的所有核心时。我想添加另一台服务器,并在两台机器之间分配作业,但每个作业仍然使用机器上的所有内核 运行。如果两台机器都忙,我需要下一个作业排队,直到两台机器中的一台空闲。

我认为这可能由 python 控制,但我是新手,不确定哪个 python 包最适合这个问题。

我喜欢用于作业排队的 "heapq" 软件包,但它看起来像是专为单个服务器使用而设计的。然后我查看了 Ipython.parallel,但它似乎更适合为每个核心(在一台或多台服务器上)创建一个单独的较小作业。

我在这里看到了一大堆不同的选择 (https://wiki.python.org/moin/ParallelProcessing),但我可以得到一些指导来解决像这样的问题。

任何人都可以建议一个可能有助于解决这个问题的软件包,或者不同的方法来解决这个问题吗?

Celery 完全满足您的需求 - 可以轻松地在多台(许多)机器上分配任务队列。

请参阅 the Celery tutorial 开始。

或者,IPython 内置了自己的基于 ZeroMQ 的多处理库;参见 the introduction。我以前没有用过这个,但它看起来很简单。