Pythonでマルチプロセス
ここを参照して簡単なマルチプロセスのプログラムを書いてみました。
シングルプロセス
まずは練習として多重度1のマルチプロセス(つまりただのシングルプロセス)を実行してみました。
from multiprocessing import Process def f(name): print 'hello', name if __name__ == '__main__': p = Process(target=f, args=('Alice',)) p.start() p.join()
実行結果
# python multiprocess.py hello Alice
引数で指定したAliceが、target先の関数fに引き渡されて実行されているのがわかります。
マルチプロセス
次は複数のプロセスを実行させてみます。確認のため各プロセスのPIDを表示させます。
from multiprocessing import Process import os def f(num): print "Number: ", num print 'parent process:', os.getppid() print 'process id:', os.getpid() if __name__ == '__main__': for num in range(10): p = Process(target=f, args=(num, )) p.start() p.join()
実行結果
# python multiprocess.py Number: 0 parent process: 1952 process id: 1953 Number: 1 parent process: 1952 process id: 1954 Number: 2 parent process: 1952 process id: 1955 Number: 3 parent process: 1952 process id: 1956 Number: 4 parent process: 1952 process id: 1957 Number: 5 parent process: 1952 process id: 1958 Number: 6 parent process: 1952 process id: 1959 Number: 7 parent process: 1952 process id: 1960 Number: 8 parent process: 1952 process id: 1961 Number: 9 parent process: 1952 process id: 1962
確かに共通の親プロセスから子プロセスが生成・実行されているのが確認できます。
さっくりマルチプロセスのプログラムがかけるPythonはとても便利です♪