見出し画像

見える安心感!streamlitのプログレスバーでストレスフルな待ち時間にさよなら!

解析ツールを実行すると、どうしても読み込み時間がかかります。
視覚的にもどれだけ待てば良いのかわからないのはストレスですよね。

今回はプログレスバーを実装しようと思います。

実装環境

OS windows10
言語 Python
FW Streamlit

st.progress

準備されていました。さすがです。

import streamlit as st
import time

progress_text = "Operation in progress. Please wait."
my_bar = st.progress(0, text=progress_text)

for percent_complete in range(100):
    time.sleep(0.1)
    my_bar.progress(percent_complete + 1, text=progress_text)

他のプログラムとおおよそ同じような作りですね。
ループのたびにカウントアップして進行状況を視覚化することができます。

プログレスバーのカウント

与えるパラメータは0~1ということ。注意してください。
例えば配列数が500の時は「1/500」ずつカウントアップさせる必要があります。

import streamlit as st
import time

progress_text = "Operation in progress. Please wait."
my_bar = st.progress(0, text=progress_text)

for percent_complete in range(500):
    my_bar.progress(percent_complete + 1, text=progress_text)  ⇐100を超えるからエラー

サンプルのプログラムのループ回数をいじるだけではだめです。

import streamlit as st

progress_text = "Operation in progress. Please wait."
my_bar = st.progress(0, text=progress_text)

percent_complete = 0.0
total_cnt = 500
for _ in range(total_cnt):
    percent_complete += 1/total_cnt
    if percent_complete <= 1:
        my_bar.progress(percent_complete, text=progress_text)

0=<value=<1を満たすように調整してあげましょう。

プログレスバーが消えない

・・・

・・・

これで完了かと思いきや、勝手にプログレスバーが消えないんですね。
公式のドキュメント通りに作ったのに。

公式のHow-Toにいいコメントがありました。
「empty()」を呼べばプログレスバーが消えるとのことです。

実装コード

import streamlit as st

progress_text = "Operation in progress. Please wait."
my_bar = st.progress(0, text=progress_text)

percent_complete = 0.0
total_cnt = 500
for _ in range(total_cnt):
    percent_complete += 1/total_cnt
    if percent_complete <= 1:
        my_bar.progress(percent_complete, text=progress_text)
        
my_bar.empty()

最終的にはこんな感じです。
streamlit自体はいいツールなのでもう少し日本人向けに情報が増えたらうれしいですね。

この記事が気に入ったらサポートをしてみませんか?