私に説明してくださいこれら2つのクラスの違いは何ですか?
multiprocessing
モジュールがPython 2.に存在することに気付きました。しかし、機能的にはどうですか?
ドキュメントに記載されているように、 concurrent.futures.ProcessPoolExecutor
はmultiprocessing.Pool
のラッパーです。そのため、multiprocessing
と同じ制限が適用されます(たとえば、オブジェクトはピクル可能にする必要があります)。
ただし、concurrent.futures
は、さまざまなタイプの非同期タスクを便利な方法で管理するために使用できる抽象インターフェースを提供することを目的としています。例えばプロセスプールの使用からスレッドの使用への非同期戦略の変更は、多くの場合、1行または2行のコードを変更するのと同じくらい簡単です(自分でコーディングする必要はありません)。抽象化におけるもう1つの(関連する)利点は、concurrent.futures
が単一のAPIを覚えておくということです-そして、タスクに最も適したエグゼキューターを選択できます。プロセスを使用していますIOバインドされていますか?すばらしい、ThreadPoolExecutor
を使用します。グローバルインタープリターロック(GIL)が原因で高速化に問題が発生しますか?問題ありません。 ProcessPoolExecutor
。