Caching and state

优化性能并为您的应用添加状态管理!

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" )

Streamlit 在每次用户交互时重新执行您的脚本。小部件在重新运行之间具有内置的状态保持功能,但会话状态让您能够做得更多!

会话状态

在重新运行和跨页面之间保存数据。

st.session_state["foo"] = "bar"

查询参数

获取、设置或清除浏览器URL栏中显示的查询参数。

st.query_params[key] = value st.query_params.clear()
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"]} )
forum

还有问题吗?

我们的 论坛 充满了有用的信息和Streamlit专家。