我有两台电脑,c1和c2。 c1是双核cpu,c2是四核cpu。所以我用芹菜连接这两台计算机,使用6名工人完成一些任务。但是,当我在c1中使用6个工人的多处理时,似乎芹菜中的每个工人在多处理中都比较慢?这是为什么?那么芹菜相对于多重加工有什么优势呢?
例如:
我有这个功能:
def readFromHBase(inputData):
...
return data
我使用芹菜和多处理从100000个样本中读取1000个文件。
在芹菜中我设置了6名工人,他们穿过两台电脑c1和c2,如上所述。每个工作人员将读取10个文件,直到获得1000个文件。
在多处理中,我做了同样的事情,但只是在c1和6工作池中设置。每个工作人员将读取10个文件,直到获得1000个文件。
结果表明,多处理中的每个工人比芹菜花费的时间更少。这是怎么发生的?
答案 0 :(得分:1)
Celery有一个队列经纪人。多处理没有。 芹菜工作者从中央队列中拉出任务,网络一(甚至在本地主机上)。多处理使用IPC。
当然,IPC的开销比套接字层少。
您可以根据自己的表现支付费用。