web-dev-qa-db-ja.com

マルチプロセスとサブプロセスの違いは何ですか?

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

55
Jun HU

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

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

73
Martijn Pieters

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

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

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

29
unutbu

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

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

14
DNS