Streamlit 进度条: 使用 StreamlitProgressBar 类模拟 tqdm
以下是一个类似于 tqdm 的类,可以在 Streamlit 上使用的示例代码:
import time
import streamlit as st
class StreamlitProgressBar:
def __init__(self, total):
self.total = total
self.progress_bar = st.progress(0)
self.start_time = time.time()
def update(self, progress):
self.progress_bar.progress(int(progress / self.total * 100))
elapsed_time = time.time() - self.start_time
estimated_time = elapsed_time / progress * (self.total - progress)
st.write(f'Elapsed Time: {elapsed_time:.2f}s, Estimated Time Remaining: {estimated_time:.2f}s')
这个类接受一个参数 total,表示总共要迭代的次数。在初始化时,它会创建一个 Streamlit 的进度条,并记录当前时间。在更新进度时,它会根据当前进度计算已经过去的时间和估计剩余时间,并用 st.write 函数打印出来。
使用这个类的示例代码如下:
import time
total = 100
progress_bar = StreamlitProgressBar(total)
for i in range(total):
time.sleep(0.1)
progress_bar.update(i+1)
在这个示例代码中,我们迭代 100 次,并每次暂停 0.1 秒来模拟一些耗时的操作。在每次迭代时,我们调用 progress_bar.update 方法来更新进度条和时间信息。运行这个示例代码后,你应该能够在 Streamlit 的界面上看到一个进度条,并实时更新已经过去的时间和估计剩余时间。
原文地址: https://www.cveoy.top/t/topic/niCY 著作权归作者所有。请勿转载和采集!