【Python】Joblibで処理を並列化する

 

「Pythonのコードを高速化したい」

そんな時は、Joblibで処理を並列化すると良いです。

 

スポンサーリンク

 

普通に実行した場合

 

時間がかかる処理を普通に実行した場合をみてみます。

 

 

まず、0から9999までを足し算するadd_process関数を作ります。

さらに、add_process関数を1万回実行してみます。計算量は1万×1万で1億です。

 

 

5秒程度かかりました。

 

並列化する

 

 

並列化の書き方は以下の通り。

 

Parallel(パラメータ)([delayed(関数)(関数の引数) for ループ条件])

 

add_processは引数が無いので何も指定しません。

 

n_jobsで、CPUのコア数を指定します。1だと並列化せずに実行します。-1に指定すると最大のコア数で計算してくれます。

verboseは並列計算のログの頻度を指定するパラメータです。デフォルトは0(ログ無し)で、1からログが出るようになり、10が最も高頻度になります。

Parallelの返り値はリストです。

 

 

3.6秒に短縮されました。私のPCは安物の4コアなので思ったより短縮されませんでしたが、コア数が高ければ高いほど高速になります。

 

Pythonの処理に時間がかかっている場合は試してみてはいかがでしょうか。

 

おわり。

ABOUTこの記事をかいた人

のっくん

理系院卒で大企業の研究所に就職。 趣味はプログラミング、レアジョブ英会話、筋トレ、旅行。 Twitter:@yamagablog