2

c1 と c2 の 2 台のコンピューターがあります。c1 は 2 コアの CPU で、c2 は 4 コアの CPU です。そこで、これら 2 台のコンピューターを 6 つのワーカーを使用してセロリに接続し、いくつかのタスクを実行します。ただし、c1 で 6 ワーカーのマルチプロセッシングを使用すると、セロリのすべてのワーカーがマルチプロセッシングで遅くなるように見えますか? 何故ですか?では、マルチプロセッシングに対するセロリの利点は何ですか?

例えば:

私は機能を持っています:

    def readFromHBase(inputData):
        ...
        return data

セロリとマルチプロセッシングを使用して、100000 個のサンプルから 1000 個のファイルを読み取りました。

セロリでは、上記のように、2 台のコンピューター c1 と c2 にまたがる 6 つのワーカーを設定しました。1000 個のファイルがすべて取得されるまで、すべてのワーカーが 10 個のファイルを読み取ります。

マルチプロセッシングでも同じことを行いましたが、c1 だけで 6 ワーカー プールを設定しました。1000 個のファイルがすべて取得されるまで、すべてのワーカーは 10 個のファイルを読み取ります。

結果は、マルチプロセッシングのすべてのワーカーは、セロリよりも時間がかからないことを示しています。これはどのように起こりますか?

4

1 に答える 1

2

Celery にはキュー ブローカーがあります。マルチプロセッシングはそうではありません。Celery ワーカーは、ネットワーク 1 の中央キューからタスクをプルします (localhost 上でも)。マルチプロセッシングは IPC を使用します。

もちろん、IPC はソケット層よりもオーバーヘッドが少なくなります。

スケールする能力に対して、パフォーマンスで支払います。

于 2015-04-07T00:05:12.700 に答える