python3でのマルチプロセス

multiprocessingライブラリを用いることで、python3では簡単にマルチプロセスを走らせることができる。
基本的な使い方は下記の通り。

from multiprocessing import Pool:
with Pool(number_of_processes) as p: returnValueList=p.map(function,argList)

ループが登場する際には、そのループの処理を関数化することにより、簡単に高速化が期待できることになる。
具体的に、multiprocessingを利用する前のsingle processとmulti processの場合のコードの変化を見てみよう。

関数に引数がない場合にはその差が分かりやすい。

[single process]
for arg in argList: function,argList

[multi process]
from multiprocessing import Pool
with Pool(number_of_processes) as p:
  p.map(function,argList)

関数に引数があるときは、下記の通りになる。

[single process]
for arg in argList:
  returnValueList.append(function,argList)

[multi process]
from multiprocessing import Pool
with Pool(number_of_processes) as p:
  returnValueList=p.map(function,argList)

尚、ループ内の処理を関数化していることが、基本的な利用条件となる。

コメントを残す

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