2

我有两台电脑,c1 和 c2。c1是两核cpu,c2是四核cpu。因此,我使用 6 名工人将这两台计算机与 celery 连接起来完成一些任务。但是,当我在具有 6 个工人的 c1 中使用多处理时,似乎 celery 中的每个工人在多处理中都比较慢?这是为什么?那么 celery 相对于多处理的优势是什么?

例如:

我有这个功能:

    def readFromHBase(inputData):
        ...
        return data

我使用 celery 和 multiprocessing 从 100000 个样本中读取 1000 个文件。

在 celery 中,我设置了 6 名工人穿过两台计算机 c1 和 c2,如上所述。每个worker将读取10个文件,直到1000个文件全部获得。

在多处理中,我做了同样的事情,但只是在 c1 中设置了一个 6 个工人池。每个工人将读取 10 个文件,直到 1000 个文件全部获得。

结果表明,多处理中的每个工人都比 celery 花费更少的时间。这是怎么发生的?

4

1 回答 1

2

Celery 有一个队列代理。多处理没有。Celery 工作人员从中央队列、网络一(甚至在 localhost 上)中提取任务。多处理使用 IPC。

当然,IPC 的开销比套接字层少。

你用你的表现来支付你的扩展能力。

于 2015-04-07T00:05:12.700 回答