(72) multiprocessingでマルチプロセス処理

投稿者: | 2014年9月24日

4,003 views

この記事は最終更新から 1791日 が経過しています。

(71) threading.Threadでマルチスレッド処理 と同じことをマルチプロセスで実行してみる。

1. プログラム作成

複数プロセスで実行する関数を作成する。

from multiprocessing import Process, Manager

def makeMsg(name, outList, outDict):
    msg = 'Hello! I am %s.' % name
    outList.append(msg)
    outDict[name] = msg   # or outDict.update({name: msg})

プロセスを3個起動してみる。

if __name__ == '__main__':
    names = ['aaa','bbb','ccc']
    mng = Manager()
    outList = mng.list()
    outDict = mng.dict()

    prs = []
    for name in names:
        pr = Process(target=makeMsg, args=(name, outList, outDict))
        prs.append(pr)

    for i in range(len(prs)):
        prs[i].start()

    for i in range(len(prs)):
        prs[i].join()

    print outDict.keys()
    print outDict
    print outList

2. 実行結果

[user@]$ python hello_mp.py
['aaa', 'bbb', 'ccc']
{'aaa': 'Hello! I am aaa.', 'bbb': 'Hello! I am bbb.', 'ccc': 'Hello! I am ccc.'}
['Hello! I am aaa.', 'Hello! I am bbb.', 'Hello! I am ccc.']

コメントを残す

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