コンテンツにスキップ

並列化

段々と解析の処理時間も長くなってきたため、並列化を検討することにした。

並列化の当たり前は省く。

Python並列化

Pythonの場合、並列化処理は3つ方法がある。

  • async
  • threagding
  • multiprocessing

である。簡単に違いをまとめると

スレッド数 プロセス数 CPUコア数 区分
async 1 1 1 非同期処理
threading N 1 1 並行処理
multiprocessing 1(1コアあたり) N N 並列処理

今回はmultiprocessingを使う。

まず型は以下の通りである。

import time
from multiprocessing import Pool

# 並列処理させる関数
def nijou(x):
    print('input: %d' % x)
    time.sleep(2)
    retValue = x * x
    print('double: %d' % (retValue))
    return(retValue)

if __name__ == "__main__":
    p = Pool(4) # プロセス数を4に設定
    result = p.map(nijou, range(10))  # nijou()に0,1,..,9を与えて並列演算
    print(result)