Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
学ぶ プロセスの操作 | Multithreading vs. Multiprocessing
Python構造化プログラミング

プロセスの操作

メニューを表示するにはスワイプしてください

Pythonの**multiprocessingモジュールは、各プロセスが独自のPythonインタプリタとメモリ空間を持つ真の並列処理を実現します。スレッドがメモリを共有し同じプロセス内で動作するのに対し、プロセスは完全に分離されています。この分離によりグローバルインタプリタロック(GIL)の制約を回避でき、CPUバウンドなタスクで複数のCPUコアを並列に活用できます。上記のビデオを視聴した後は、プロセスベースの並列処理が、重い計算処理やGILによるボトルネックを回避して複数コアを活用したい場合に特に有用であることを理解できるはずです。multiprocessingモジュールはthreading**モジュールと似たAPIを提供しており、用途に応じてスレッドとプロセスを簡単に切り替えることができます。

これらのクラスや関数を活用することで、堅牢な並列アプリケーションの構築、データ共有の管理、プロセス実行の調整がPythonで可能になります。

123456789101112131415
import 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 バウンドな処理に適していることを示しています。

question mark

Python におけるスレッドとプロセスの違いを最もよく表している説明はどれですか?

正しい答えを選んでください

すべて明確でしたか?

どのように改善できますか?

フィードバックありがとうございます!

セクション 3.  4

AIに質問する

expand

AIに質問する

ChatGPT

何でも質問するか、提案された質問の1つを試してチャットを始めてください

セクション 3.  4
some-alt