猫型エンジニアのブログ

プログラム/ネットワーク系の技術関連をまとめたページです 

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はとても便利です♪