マルチプロセスとマルチスレッド
マルチスレッドは、コードの並列処理を実現し、運用効率を向上させることができます。Pythonは、スレッド化モジュールとキューモジュールを使用して、マルチスレッドプログラミングを実現します。
スレッドとプロセスの区別
プロセス
ヘビーウェイトプロセスはプログラムの実行です。各プロセスには独自のメモリ空間とデータスタックがあり、プロセス間通信(IPC)のみを使用でき、情報を直接共有することはできません。
プロセスプールのサイズは、同時に実行されるプロセスの数ですが、メインプロセスによって適用されるプロセスの数には影響しません。メインプロセスによって適用されるマルチプロセスの量は、プールサイズと等しくありません[3]。
マルチプロセスブロッキングおよびノンブロッキング[2]
非ブロッキング:待つ必要はありません。複数のプロセスを開始し、同時に複数のプロセスを実行します。
- 利点:高速走行速度。
- 短所:出力が乱雑になる可能性があります(確認する必要があります)。ただし、子プロセスは、操作が完了した後にのみ親プロセスを実行する必要があります。
ブロッキング:プロセス1が完了するのを待ってから、プロセス2を実行する必要があります。複数のプロセスが同時に開始された場合でも、1つのプロセスが終了してから次のプロセスを実行する必要があります。
- 利点:出力シーケンスは合理的です。これは、ロックを追加してロックを解除する(検証する)ことと同じです。出力に要件がある場合は、ブロッキングを使用できます。
- 欠点:実行速度が比較的遅いため、次のプロセスを実行する前に、1つのプロセスが終了するのを待つ必要があります。
スレッド
軽量プロセスは、すべてのスレッドが同じプロセスで実行され、同じ操作環境を共有することを除いて、プロセスに似ています。スレッドは、開始、順次実行、終了の3つの部分で構成されます。プロセス内の複数のスレッドは同じデータスペースを共有するため、スレッドはプロセスよりも簡単にデータを共有し、相互に通信できます。
参考資料
[1] https://www.cnblogs.com/hanfei-1005/category/854157.html
[2] https://blog.csdn.net/qq_41562377/article/details/105219269
[3] https://blog.csdn.net/u012969412/article/details/82768882