Python3で並列処理してみた

Python3っていうか、3.3以降です。

from concurrent.futures import ProcessPoolExecutor
import time


def work(job):
	time.sleep(job)
	print(job)

def main():
	_jobs = [5, 1, 2]
	_e = ProcessPoolExecutor(max_workers=2)
	for _j in _jobs:
		_e.submit(work, _j)

if __name__ == '__main__':
	main()

簡単なサンプルなんですけど、ワーカー2つ作って並列にworkというメソッドを実行してくれます。
実行すると

$ python sample.py
1
2
5

こんな感じに出力されます。5,1,2って順番で処理投げ込んでるのに1,2,5の順番で終わってます。

Pythonでmultiprocessingを使って並列処理 で書いたサンプルも簡単でしたけど、ProcessPoolExecutor使うともっと簡単です。

ProcessPoolExecutor使って4並列で走るツール書いて実行したらこんな感じになりました。
ProcessPoolExecutor
これはいい。