2012-07-23 22 views
15

私はPythonでアプリを書いているので、いくつかのタスクを同時に実行する必要があります。モジュールの多重処理はProcessクラスを提供し、concurrent.futuresモジュールはProcessPoolExecutorクラスを持ちます。どちらも複数のプロセスを使用してタスクを実行しているようですが、そのAPIは異なります。なぜ私はもう一方を使うべきですか?Pythonでのconcurrent.futuresとmultiprocessingの利点は何ですか?

私は、concurrent.futuresがPython 3で追加されたことを知っています。

+0

http://stackoverflow.com/questions/24896193/whats-the-difference-between-pythons-multiprocessing-and-concurrent-futuresが重複していますが、回答が他の場所では利用できない詳細を提供するため、閉じてはいけません。 – max

答えて

12

concurrent.futuresの動機については、PEPを参照してください。

私の実践的な経験では、concurrent.futuresは、長時間実行されるタスクの投入および監視状況に対して、より便利なプログラミングモデルを提供します。私は最近、concurrent.futuresを使って書いたプログラムは、2-3時間のウィンドウに入ってくるファイルのディレクトリを監視し、各ファイルがタスクに到着したときにそれを翻訳して、それを送信するようにしました。 ProcessPoolExecutorによって返される将来のオブジェクトは、タスクステータスの追跡、中間ステータスレポートの提供などを便利な方法で提供します。

関連する問題