【Python】フィボナッチ数列を求める【multiprocessingで並列化】

こんにちは、のっくんです。

今日はPythonでフィボナッチ数列を求めてみます。

フィボナッチ数列とは?

フィボナッチ数列とは、

フィボナッチ数列」とは,「前の2つの数を加えると次の数になる」という数列です。

です。

{0,1,1,2,3,5,8,13 …}

というように、前の二つを足せば良いのです。

「1番目は0」、「5番目は3」というように、ある数Xを指定するとフィボナッチ数列X番目の数値を返すような関数を作りましょう。

以下のように考えるとシンプルです。

  • 1番目は0
  • 2番目は1
  • X番目は、(X-1)番目と(X-2)番目を足す

 

普通に計算してみる

 

例として39番目のフィボナッチ数列を求めてみます。(rangeの範囲は1〜39です。)

 

実行すると以下の値が得られます。(最初の方は省略)

31秒かかりました。

multiprocessingで並列化してみる

次に、multiprocessingのモジュールを使って並列化してみます。

その前に私の自宅のPCのコア数を調べます。

12個のCPUが搭載されていることが分かりました。

ちなみに、Google Colaboratoryというクラウドサービスで同じコードを実行してみたら2コアでした。

コア数が多ければ多いほど、並列化した時にスピードアップします。

実行してみると、、

かなり速くなりましたね!

 

おわり。

ABOUTこの記事をかいた人

のっくん

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