プロセスの操作
メニューを表示するにはスワイプしてください
Pythonの**multiprocessingモジュールは、各プロセスが独自のPythonインタプリタとメモリ空間を持つ真の並列処理を実現します。スレッドがメモリを共有し同じプロセス内で動作するのに対し、プロセスは完全に分離されています。この分離によりグローバルインタプリタロック(GIL)の制約を回避でき、CPUバウンドなタスクで複数のCPUコアを並列に活用できます。上記のビデオを視聴した後は、プロセスベースの並列処理が、重い計算処理やGILによるボトルネックを回避して複数コアを活用したい場合に特に有用であることを理解できるはずです。multiprocessingモジュールはthreading**モジュールと似たAPIを提供しており、用途に応じてスレッドとプロセスを簡単に切り替えることができます。
これらのクラスや関数を活用することで、堅牢な並列アプリケーションの構築、データ共有の管理、プロセス実行の調整がPythonで可能になります。
123456789101112131415import multiprocessing import time def print_message(message, delay): time.sleep(delay) print(message) process1 = multiprocessing.Process(target=print_message, args=("Process 1 finished", 2)) process2 = multiprocessing.Process(target=print_message, args=("Process 2 finished", 1)) process1.start() process2.start() process1.join() process2.join()
このコードサンプルは、Python の multiprocessing モジュールを使用して、個別のプロセスを作成しタスクを並列実行する方法を示しています。例では、単純な時間遅延とメッセージの出力を用いて、プロセスが独立かつ同時に実行できることを示しています。
主な概念
-
プロセスの作成:
multiprocessing.Processクラスを使って新しいプロセスを作成します;- 各プロセスにはターゲット関数(
print_message)と、その関数に渡す引数を指定します。
-
プロセスの開始:
start()メソッドで各プロセスを起動し、同時に実行できるようにします;- 起動後、各プロセスは他と独立してターゲット関数を実行します。
-
並列実行:
- 両方のプロセスは
time.sleep()を使って異なる時間(2秒と1秒)だけスリープします; - 並列で実行されるため、遅延が短いプロセスが先に終了します。
- 両方のプロセスは
-
プロセスの結合(ジョイン):
join()メソッドは、メインプログラムが両方のプロセスの終了を待つことを保証します;join()を使わない場合、メインプログラムがプロセスの完了前に終了する可能性があります。
この例は、マルチプロセッシングを使うことで、複数の CPU コア上でタスクを同時に実行でき、並列処理が必要な CPU バウンドな処理に適していることを示しています。
フィードバックありがとうございます!
AIに質問する
AIに質問する
何でも質問するか、提案された質問の1つを試してチャットを始めてください