プログレスバーの実装サンプル
大量なデータを処理する際、処理の進捗率を知りたい事があります。
そんな時に進捗率を表示するプログレスバーを作成してみました。
下記方の記事を参考に、Ruby版を自分流にアレンジしております。
############################################ # printProgressBar. #@brief プログラスバー表示関数 #@param num 処理済件数 #@param max 全処理件数 #@return 無し ############################################ def printProgressBar(num, max) #進捗率[%] rate = (num.to_f()/max.to_f()*100).floor() #▽プログレスバーの表示--------------------- print "\r[" cubeNum = (rate/10).floor() for i in 1..10 if i <= cubeNum then print "*" else print " " end end print "]" #△プログレスバーの表示--------------------- #▽進捗率の表示--------------------------- #0パティング if rate < 10 then print "00" elsif rate < 100 then print "0" end print "#{rate}%" STDOUT.flush #△進捗率の表示--------------------------- #処理終了を表示(改行) if rate==100 then puts ":finish" end end
使用方法は下記のイメージです。
#処理件数 max = 1234 for num in 1..max #------------------------ #ここに処理したい内容を記述 #処理の代わりにsleep関数を呼び出している sleep 0.01 #------------------------ #プログレスバー表示 printProgressBar(num,max) end