streamlit之缓存

当涉及到速度时,缓存就变得超级重要 - 尤其是处理大型数据集时。 一个好的思路时载入数据、缓存昂贵的部分、可视化数据,然后进行交互。

Streamlit可以快速更新并重新执行整个应用逻辑,这一能力当你处理 小数据集时非常棒,但是当你需要长时间计算时,这样简单的处理会 成本昂贵并且非常耗时。这种情况下不应该重新执行整个应用, 你可以安全的使用@st.cache来重用数据。st.cache是一个让Streamlit 应用安全无痛的持久化信息的数据仓。

当你使用Streamlit的cache注解来标记一个函数时,就告诉Streamlit 任何时候调用这个函数都需要检查三个东西:

组成函数提的实际字节码
这个函数依赖的代码、变量和文件
调用函数时传入的参数
如果Streamlit是第一次见到这些内容,它就会运行函数并在本地缓存中 保存结果。下一次函数再被调用时,如果没有变化,那么Streamlit就 可以直接利用缓存的值。

那么,这样做的局限性在哪里?

的确有一些局限性:

Streamlit只会检查当前工作目录中的变化
如果你的函数不是确定性的(输出依赖于随机数),或者它从外部拉取 时变数据(例如股票行情),那么Streamlit无法判断发生了变化
不要修改缓存函数的输出,因为缓存值是按引用保存的

原文地址:http://cw.hubwiz.com/card/c/streamlit-manual/

你可能感兴趣的:(streamlit,streamlit)