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