I have code very similar to @Encrypt, but it is not working as expected. When the function return value is already cached but on button press the cached function gets called again, for a second or two the progress bar shows up. It is moving very fast to 100% and then disappears. This happens even though I confirmed via print() statements that the function body is not run again. This looks annoying. How to prevent this?
Could you please share your code snippet? I suspect there might be a bug causing the progress value to become 0. I have provided a sample code below where progress bar shouldn’t disappear after data loading.
import streamlit as st
import time
@st.cache_data(show_spinner=False)
def load_data(data_id):
progress = 0
progress_bar = st.progress(progress, "Loading data...")
for progress in range(0, 101):
time.sleep(0.1)
progress_bar.progress(progress, "Loading data...")
return "Some data"
# Load data
data_id = "1"
data = load_data(data_id)
st.write(data)