concurrent.futuresのサンプルプログラム

オライリーの『Effective Python』にconcurrent.futuresという、タスクを並列に実行するためのモジュールが出現した。

concurrent.futuresモジュールを使うと、multiprocessingやthreadingといったモジュールを使うよりも、並列タスクのプログラミングが書きやすくなるようだ。

本を読んだだけでは何が何やら理解できなかったので、concurrent.futuresのマニュアルも眺めながらサンプルプログラムを書いてみた。

要点1

concurrent.futures.Executor抽象クラスを具象化した、concurrent.futures.ThreadPoolExecuterかconcurrent.futures.ProcessPoolExecutorを使う。
concurrent.futures.Executorを直接使うことはできない。

要点2

以下のインスタンスメソッドが使える。
■submit
関数を実行する。
Futureオブジェクト(関数の実行結果が入っているらしい)なるものを返す。

■map
入力イテレーターに対して関数を実行し、結果を出力イテレーターとして返す。
(イメージ)
関数:len
入力イテレーター:[‘Python’, ‘Ruby’, ‘JavaScript’]
出力イテレーター:[6, 4, 10]

■shutdown
Executorに対してプログラムの終了を知らせる。

参考サイト

concurrent.futuresのマニュアル
concurrent.futures使い方メモ

Pythonプログラミング物語 © 2016 Frontier Theme