Goでプログレスバーを表示する
はじめに
我慢ならんことってありますよね。 クソコード書いて何も表示されないでいるとイライラしますよね。
- お前、いつまで動いとんねん。
- これバグってないか
- 誰じゃ書いたやつ出てこいや。
文句は垂れるが、処理速度を早くするようなアルゴリズム思いつかねぇ。 そんなあなた(私)に朗報です。 解決はしないが、待つ時間がどのぐらいか予測できると人は落ち着くものです。 今回紹介するのは、気持ち和らげるものあれです。 そうですね、プログレスバーです。
プログレスバーを表示するプラグイン
インストール
go get github.com/cheggaaa/pb/v3
お手軽ですね。
Sample
Githubのサンプルコードを貼り付けています。 countでプログレスバーの最大値を規定して、loopの中でbar.Increment()をすることでプログレスバーを進めることができます。
package main
import (
"time"
"github.com/cheggaaa/pb/v3"
)
func main() {
count := 100000
// create and start new bar
bar := pb.StartNew(count)
// start bar from 'default' template
// bar := pb.Default.Start(count)
// start bar from 'simple' template
// bar := pb.Simple.Start(count)
// start bar from 'full' template
// bar := pb.Full.Start(count)
for i := 0; i < count; i++ {
bar.Increment()
time.Sleep(time.Millisecond)
}
bar.Finish()
}
記事にするにはあんまりだろうということで…
Twitterの過去ツイートからベストポジティブツイートを探すためのコードを実行しています。 あまりにもゴミすぎて遅くて使い物にならねぇわと憤りを隠せないのですが、 まぁ使い捨てだから一晩動かして寝ようと思い諦めております。
かと言ってどの程度放置すれば良いかも分かったものじゃないため、導入しました。
コード
alltweetというのは、ユーザが行った全ツイートデータを詰め込んだ構造体配列です。 この配列数をcountの値にセットします。 forループ内でbar.Increment()を行うことでプログレスバーが表示されます。
count := len(alltweet)
bar := pb.Simple.Start(count)
bar.SetMaxWidth(80)
var alltwe []emotiontweet
for _, v := range alltweet {
bar.Increment()
dics := jumanppGo.JumanDic(v.full_text)
eval, sum := jumanppGo.AverageVolume(dics)
st := setStruct(v, eval, sum)
alltwe = append(alltwe, st)
}
全ツイートに対しjumangoで形態素解析したものを、 感情コーパス当てはめを行いポジティブ度を算出しています。
結果がちゃんと出れば詳細に記事書きます。
実行結果
進捗率まで出してくれてますね。素晴らしい。
まとめ
質の高い記事を張り切ってブログをはじめましたが、まずは色々と試して量を書くことを目指すことにしました。 下手な鉄砲も数打ちゃ当たるといいますし、 何でも量産すればそこそこ質は後から付いてくる理論を採用しています。
引き続きよろしくおねがいします。