\

Pythonのmultiprocessingモジュールは、複数のプロセス(サブプロセス)を生成し、マルチプロセッサーマシンの性能を最大限に引き出すことができます。このモジュールの中にはProcessクラスがあり、このクラスを使って並列処理(マルチプロセス)を実現することができます。

Processクラスの基本的な使い方

まずは、Processクラスを使った基本的な並列処理のコードを見てみましょう。

from multiprocessing import Process 
from time import sleep 

# メインプロセスで動かす関数 
def func_1(num): 
    print('メインプロセスStart') 
    for i in range(num): 
        print('メインプロセス:', i) 
        sleep(1) 
    print('メインプロセスEnd') 

# サブプロセスで動かす関数 
def func_2(num): 
    print('サブプロセスStart') 
    for i in range(num): 
        print('サブプロセス:', i) 
        sleep(0.5) 
    print('サブプロセスEnd') 

if __name__ == '__main__': 
    p = Process(target=func_2, args=(10,)) 
    p.start() 
    func_1(10)

このコードでは、Processクラスを使ってサブプロセスを生成し、そのサブプロセスでfunc_2関数を実行しています。同時に、メインプロセスではfunc_1関数が実行されています。これにより、メインプロセスとサブプロセスが同時に実行され、並列処理が実現されています。

joinメソッドの使い方

Processクラスのjoinメソッドは、サブプロセスが終了するまでメインプロセスを一時的に待機させるためのメソッドです。このメソッドを使うことで、サブプロセスの処理が完全に終了した後にメインプロセスの処理を再開することができます。

以下のコードは、joinメソッドを使った例です。

if __name__ == '__main__': 
    p = Process(target=func_2, args=(10,)) 
    p.start() 
    p.join()  # サブプロセスが終了するまで待機
    func_1(10)

このコードでは、p.join()により、func_2関数の処理が完全に終了した後にfunc_1関数の処理が開始されます。

以上が、PythonのmultiprocessingモジュールとProcessクラスのjoinメソッドの基本的な使い方です。これらを使うことで、Pythonでの並列処理を効率的に行うことができます。

投稿者 admin

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です