<Python, multiprocessing> マルチプロセスを試してみた。

ちと、必要があり、multiprocessingモジュールを試してみた。

なにやら、戻り値return valueを取るには、Poolmapを使わないといけない。。。
なにやら、mapの場合は、引数が1つしかとれないから、ラッパー関数を作ってくるまないといけない。。。うんぬん。。。
難しい。。。

で、出来たコードはこり。

こいつを流してみた。
Pool(1)つまり、プロセス数が1つの場合。

 % python multiprocessing_args.py
1
1.1610000133514404
[5, 7, 9, 11, 13, 15, 17, 19, 21, 23]
time:0.1299998760223389 r:    5 pid:18512
time:0.2300000190734863 r:    7 pid:18512
time:0.3299999237060547 r:    9 pid:18512
time:0.4299998283386230 r:   11 pid:18512
time:0.5309998989105225 r:   13 pid:18512
time:0.6309998035430908 r:   15 pid:18512
time:0.7309999465942383 r:   17 pid:18512
time:0.8309998512268066 r:   19 pid:18512
time:0.9309999942779541 r:   21 pid:18512
time:1.0309998989105225 r:   23 pid:18512

Pool(3)つまり、プロセス数が3つの場合。

  % python multiprocessing_args.py
3
0.562000036239624
[5, 7, 9, 11, 13, 15, 17, 19, 21, 23]
time:0.1300001144409180 r:    9 pid:11764
time:0.2300000190734863 r:   11 pid:11764
time:0.3300001621246338 r:   17 pid:11764
time:0.1300001144409180 r:    5 pid:19352
time:0.2300000190734863 r:   13 pid:19352
time:0.3300001621246338 r:   21 pid:19352
time:0.1300001144409180 r:    7 pid:14840
time:0.2300000190734863 r:   15 pid:14840
time:0.3300001621246338 r:   19 pid:14840
time:0.4120001792907715 r:   23 pid:14840

にゃるほど。。。

お世話になったところ。

qiita.com

note.crohaco.net

17.2. multiprocessing — プロセスベースの並列処理 — Python 3.6.3 ドキュメント

ちなみに、昔、ちとやった、multithreadはこり。

nekoyukimmm.hatenablog.com