私の仕事は並列技術を使用する必要があり、私はpythonの新しいユーザーです。だから、python multiprocessing
およびsubprocess
モジュールについての資料を共有できるかどうか疑問に思う。これら2つの違いは何ですか?
subprocess
モジュールを使用すると、他のプログラムを実行および制御できます。コンピューターのコマンドラインから開始できるものはすべて、このモジュールで実行および制御できます。これを使用して、外部プログラムをPythonコードに統合します。
multiprocessing
モジュールを使用すると、pythonで記述されたタスクを複数のプロセスに分割してパフォーマンスを向上させることができます。threading
モジュールに非常に類似したAPIを提供します。作成するプロセス間でデータを共有するメソッド。複数のプロセスを管理するタスクを実行して、Pythonコード(非常に))を簡単にします。つまり、multiprocessing
を利用すると、複数のプロセスを使用して、コードを並列に実行することでタスクを高速化できます。
外部プログラム(特にPythonで書かれていないプログラム)を呼び出す場合は、subprocess
を使用します。
サブプロセスでPython関数を呼び出す場合は、multiprocessing
を使用します。
(プログラムがPythonで書かれているがインポート可能である場合、multiprocessing
を介して外部から呼び出すのではなく、subprocess
を使用して関数を呼び出そうとします。)
サブプロセスは新しいプロセスを生成しますが、stdin/stdoutおよび他のプログラムが実装する他のAPIを除き、それらと通信する手段はありません。その主な目的は、独自のプログラムから完全に分離されたプロセスを起動することです。
マルチプロセッシングも新しいプロセスを生成しますが、それらはコードを実行し、互いに通信するように設計されています。これを使用して、独自のプログラム内のタスクを複数のCPUコアに分割します。