14

multiprocessingのパッケージを使用しようとしていますPython。チュートリアルを見ると、最も明確で簡単な手法は を使用しているようですpool.map。これにより、ユーザーはプロセスの数を簡単に指定しpool.map、関数とその関数の値のリストを渡して CPU 間で分散させることができます。私が遭遇したもう 1 つの手法は、キューを使用してワーカーのプールを管理することです。この回答pool.mapは、 、pool.apply、およびの違いを説明する優れた仕事ですが、こののようにキューを使用する場合と使用pool.apply_asyncする場合の利点と欠点は何ですか?pool.map

4

2 に答える 2

10

このpool.map手法は、キューを使用した手法の「サブセット」です。つまり、と を使用しpool.mapて簡単に実装できます。つまり、キューを使用すると、プール プロセスをより柔軟に制御できます。つまり、特定の種類のメッセージをプロセスの有効期間ごとに 1 回だけ読み取ったり、プール プロセスのシャットダウン動作を制御したりできます。PoolQueue

于 2013-09-26T17:42:53.250 に答える
4

「最も明確で最も簡単な手法」を本当に探している場合は、 を使用するconcurrent.futures.ProcessPoolExecutorのがおそらく最も簡単な方法です。メソッドと、map非常に使いやすくする他のいくつかのプリミティブがあります。Sにも対応していQueueます。

于 2013-09-26T17:47:41.170 に答える