<Python, multiprocessing> マルチプロセスを試してみた。
ちと、必要があり、multiprocessing
モジュールを試してみた。
なにやら、戻り値return value
を取るには、Pool
とmap
を使わないといけない。。。
なにやら、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
にゃるほど。。。
お世話になったところ。
17.2. multiprocessing — プロセスベースの並列処理 — Python 3.6.3 ドキュメント
ちなみに、昔、ちとやった、multithread
はこり。