93

私の仕事は並列技術を使用する必要があり、私はpythonの新しいユーザーです。multiprocessingそれで、Pythonとsubprocessモジュールに関するいくつかの資料を共有できるかどうか疑問に思います。これら2つの違いは何ですか?

4

3 に答える 3

122

このsubprocessモジュールを使用すると、他のプログラムを実行および制御できます。コンピューターのコマンドラインから開始できるものはすべて、このモジュールで実行および制御できます。これを使用して、外部プログラムをPythonコードに統合します。

このmultiprocessingモジュールを使用すると、Pythonで記述されたタスクを複数のプロセスに分割して、パフォーマンスを向上させることができます。threadingモジュールと非常によく似たAPIを提供します。作成するプロセス間でデータを共有するためのメソッドを提供し、Pythonコードを実行するための複数のプロセスを管理するタスクを(はるかに)簡単にします。つまり、multiprocessing複数のプロセスを利用して、コードを並列に実行することでタスクをより高速に実行できます。

于 2012-11-28T14:15:17.393 に答える
43

外部プログラム(特にPythonで記述されていないプログラム)を呼び出す場合は、を使用しますsubprocess

サブプロセスでPython関数を呼び出す場合は、を使用しますmultiprocessing

multiprocessing(プログラムがPythonで記述されているが、インポートも可能である場合は、外部から呼び出すのではなく、を使用して関数を呼び出そうとしますsubprocess。)

于 2012-11-28T14:06:26.030 に答える
19

サブプロセスは新しいプロセスを生成しますが、stdin / stdoutおよび他のプログラムが実装する可能性のある他のAPIを除いて、それらと通信する手段はありません。その主な目的は、独自のプログラムとは完全に別のプロセスを起動することです。

マルチプロセッシングも新しいプロセスを生成しますが、それらはコードを実行し、相互に通信するように設計されています。これを使用して、独自のプログラム内のタスクを複数のCPUコアに分割します。

于 2012-11-28T14:07:21.170 に答える