Caching and state
优化性能并为您的应用添加状态管理!
Caching
Streamlit 提供了强大的缓存原语用于数据和全局资源。它们使您的应用程序即使在从网络加载数据、操作大型数据集或执行昂贵的计算时也能保持高性能。
缓存数据
函数装饰器,用于缓存返回数据的函数(例如数据框转换、数据库查询、机器学习推理)。
@st.cache_data
def long_function(param1, param2):
# Perform expensive computation here or
# fetch data from the web here
return data
缓存资源
函数装饰器,用于缓存返回全局资源(例如数据库连接、ML模型)的函数。
@st.cache_resource
def init_model():
# Return a global resource here
return pipeline(
"sentiment-analysis",
model="distilbert-base-uncased-finetuned-sst-2-english"
)
Manage state
Streamlit 在每次用户交互时重新执行您的脚本。小部件在重新运行之间具有内置的状态保持功能,但会话状态让您能够做得更多!
会话状态
在重新运行和跨页面之间保存数据。
st.session_state["foo"] = "bar"
查询参数
获取、设置或清除浏览器URL栏中显示的查询参数。
st.query_params[key] = value
st.query_params.clear()
Deprecated commands
delete
此命令在版本1.18.0中已弃用。请改用
st.cache_data
。
备忘录
实验性函数装饰器,用于记忆函数执行。
@st.experimental_memo
def fetch_and_clean_data(url):
# Fetch data from URL here, and then clean it up.
return data
delete
此命令在版本1.18.0中已弃用。请改用
st.cache_resource
。
单例模式
实验性函数装饰器,用于存储单例对象。
@st.experimental_singleton
def get_database_session(url):
# Create a database session object that points to the URL.
return session
delete
获取查询参数
获取显示在浏览器URL栏中的查询参数。
param_dict = st.experimental_get_query_params()
delete
设置查询参数
设置显示在浏览器URL栏中的查询参数。
st.experimental_set_query_params(
{"show_all"=True, "selected"=["asia", "america"]}
)
还有问题吗?
我们的 论坛 充满了有用的信息和Streamlit专家。