Python のmultiprocessingモジュールを使用する

スポンサーリンク

Pythonのmultiprocessingモジュールは、システムが複数のプロセスを同時に実行できるようにする組み込みパッケージです。

今回はこの組み込みパッケージを簡単に使用してみます。

■Python

今回は、Google Colaboratoryを用います。Google ColaboratoryのPythonのバージョンは、記事作成時点では「3.7.13」となっています。

■multiprocessingモジュールを使用する

では、multiprocessingモジュールを使用したスクリプトを書いていきます。

■コード

import multiprocessing
  
def test_1(num):

    print("result1: {}".format(num * num ))
  
def test_2(num):

    print("result2: {}".format(num * num))
  
if __name__ == "__main__":
    # プロセスの作成
    p1 = multiprocessing.Process(target=test_1, args=(10, ))
    p2 = multiprocessing.Process(target=test_2, args=(100, ))
  
    # プロセスの開始
    p1.start()
    p2.start()
  
    # 各プロセスが終了するまで待機する
    p1.join()
    p2.join()
  
    # both processes finished
    print("2つのプロセスは完了しました。")

まず、importでmultiprocessingモジュールを呼び出します。その後、def文を用いて今回はtest_1と、test_2という関数を定義します。関数の括弧内にはnumという引数,パラメータを設定します。設定後、この関数が呼び出された時に実行する処理を関数内に記述します。今回の処理としては、引数,パラメータとして渡した値を算術演算子の”*(アスタリスク)”を用いて乗算し、乗算した結果をformat()関数を用いて波かっこ”{}”で囲まれた置換フィールドに結果を置き換えるというものです。

2つの関数を定義後、p1とp2という変数を定義し、その中でmultiprocessing.Process()を用います。これでプロセスを作成します。multiprocessing.Process()の括弧内には、第1の引数,パラメータ(target=)として、メソッドによって呼び出される呼び出し可能なオブジェクトを渡します。今回はtest_1とtest_2の関数を渡します。次に第2の引数,パラメータ(args=)として、ターゲット呼び出しの引数タプルを渡します。今回はtest_1とtest_2の関数に渡す値でそれぞれ「10」、「100」を渡します。

変数を定義後、プロセスを開始するために、start()を用います。これでプロセスが開始されます。次にjoin()を用います。これで各プロセスが終了するまで待機します。最後にprint()を用いてプロセスが完了したという文字列を出力させます。

■検証・実行

コードを保存後、このコードを実行してみます。

実行してみると、multiprocessingモジュールを用いて、2つのプロセスを同時に実行し、結果を出力させることができることを確認できました。

コメント

タイトルとURLをコピーしました