skip to content
barorin&?

Streamlitのキャッシュ管理が変わりました

/ 1 min read

はじめに

Streamlit のキャッシュ管理は、今までst.cachest.experimental_memost.experimental_singletonで対応していましたが、 バージョン 1.18.1 から@st.cache_datast.cache_resoureに変わりました。
DataFrame の読み込みや API 経由でのデータ取得、NumPy Array の計算といったものはst.cache_data、 DB 接続や機械学習モデルのロードはst.cache_resoureだそうです。

内容

簡単な使い方

DB に接続して、df を取得してみましょう。

import streamlit as st
import pandas as pd

@st.cache_resource
def get_db_engin():
    """DB接続"""
    SQLALCHEMY_DATABASE_URL = "sqlite:///hoge.db"
    engine = create_engine(
        SQLALCHEMY_DATABASE_URL, connect_args={"check_same_thread": False}
    )
    return engine


@st.cache_data
def get_df():
    engine = get_db_engin()
    df = pd.read_sql(sql="SELECT * FROM fugas", con=engine)
    return df

参考

Introducing two new caching commands to replace st.cache!