---
title: "#30DaysOfStreamlit Day24 st.cache_data, cache_resource"
description: "この記事では、#30DaysOfStreamlitの内容の紹介を行います。\nst.cache_data, st.cache_resorce\nStreamlitでは、`st.cache_data`, `st.cache_resorce`でコントロール可能です。\n以下、各機能の説明です。"
image: https://knowledge.insight-lab.co.jp/hubfs/30days_logo.png
---

[![INSIGHT LAB](https://knowledge.insight-lab.co.jp/hs-fs/hubfs/INSIGHT%20LAB_%E6%96%87%E5%AD%97%E3%81%AE%E3%81%BF_WHT-1.png?width=400&height=110&name=INSIGHT%20LAB_%E6%96%87%E5%AD%97%E3%81%AE%E3%81%BF_WHT-1.png) ![INSIGHT LAB](https://knowledge.insight-lab.co.jp/hs-fs/hubfs/INSIGHT%20LAB_%E6%96%87%E5%AD%97%E3%81%AE%E3%81%BF.png?width=400&height=110&name=INSIGHT%20LAB_%E6%96%87%E5%AD%97%E3%81%AE%E3%81%BF.png)](https://knowledge.insight-lab.co.jp/aidx)

[![お問い合わせ](https://hubspot-no-cache-na2-prod.s3.amazonaws.com/cta/default/5935783/97d2baf6-f3cd-4932-be66-900264c5d298.png)](https://hubspot-cta-redirect-na2-prod.s3.amazonaws.com/cta/redirect/5935783/97d2baf6-f3cd-4932-be66-900264c5d298)

<https://knowledge.insight-lab.co.jp/aidx/30daysofstreamlit-day24-st.cache_data-cache_resource#tmpmodule_1593485625696253>

- [AIDXナレッジ](https://knowledge.insight-lab.co.jp/aidx)

###### 2 分で読むことができます。

# [#30DaysOfStreamlit Day24 st.cache\_data, cache\_resource](https://knowledge.insight-lab.co.jp/aidx/30daysofstreamlit-day24-st.cache_data-cache_resource)

 執筆者 [Budo Ogimoto](https://knowledge.insight-lab.co.jp/aidx/author/budo) 更新日時 2023年12月19日

###### Topics: [Python](https://knowledge.insight-lab.co.jp/aidx/tag/python) [streamlit](https://knowledge.insight-lab.co.jp/aidx/tag/streamlit)

![](https://knowledge.insight-lab.co.jp/hubfs/30days_logo.png)

 目次

## はじめに

---

この記事では、#30DaysOfStreamlitの内容の紹介を行います。   
#30DaysOfStreamlitについては[コチラの記事](https://knowledge.insight-lab.co.jp/aidx/30daysofstreamlitをやってみた)を参照してください。

## st.cache\_data, st.cache\_resorce

Streamlitでは、`st.cache_data`, `st.cache_resorce`でキャッシュのコントロール可能です。   
以下、各機能の説明です。

**st.cache\_data**   
データの計算をキャッシュする。  
例えば、DataFrameの変形や、NumPy配列の計算、機械学習モデルの推論など。 想定される利用法としては、以下の三点があげられます。

- CSVからロードされたDataFrame
- Numpy配列の変形結果
- APIへのクエリの結果

**st.cache\_resorce**   
共有される資源(global resource)の初期化をキャッシュする。  
例えば、データベースとの接続や機械学習モデルなど。

元々は`st.cache`という一つの機能として提供されていました。   
ですが、`st.cache`が多くのケースに対応しようとした結果、動作が遅くなってしまった為、機能が別れました。

今回は`st.cache_data`の検証を行います。

## 構築する目標

`st.cache_data`を利用した時と利用してない時での表示速度を理解できるアプリケーションを構築します。

## アプリケーションの構築

以下のようなPythonスクリプトを準備します。

上記のコードを実行すると下記のような画面が展開します。  
初回のアクセスだと速度差はほぼない状況です。

![Untitled (1)-2](https://knowledge.insight-lab.co.jp/hs-fs/hubfs/Untitled%20(1)-2.png?width=1020&height=1607&name=Untitled%20(1)-2.png)

ページをリロードしてみます。

![Untitled (2)-3](https://knowledge.insight-lab.co.jp/hs-fs/hubfs/Untitled%20(2)-3.png?width=1020&height=1620&name=Untitled%20(2)-3.png)

st.cache\_dataを利用しているパターンでは、若干ロード時間が早くなっています

## コードの解説

まずは必要なライブラリのインポートとページタイトルの設定を行います。

続いて、st.cache\_dataを利用した場合の実装を行います。

今回の実装では、2,000,000件のレコード、5件のカラムを持つデータフレームを生み出す関数を実装します。(値は乱数で実装します。)  
この関数をst.cache\_dataのデコレーターをつけて実行させています。  
また、timeライブラリを利用して実行時間を計測しています。  
最後にst.infoで実行時間を表示します。

さらに、st.cache\_dataを利用しない場合の実装を行います。

内容としては、st.cache\_dataを利用したときと同様の実装内容です。  
唯一の違いはst.cache\_dataのデコレーターがないところです。

- [Tweet](https://twitter.com/share)

![Budo Ogimoto](https://knowledge.insight-lab.co.jp/hubfs/Budo.png)

#### 執筆者 [Budo Ogimoto](https://knowledge.insight-lab.co.jp/aidx/author/budo)

柔術を操るデータサイエンティスト

###### [前の投稿](https://knowledge.insight-lab.co.jp/aidx/30daysofstreamlit-day23-st.experimental_get_query_params)

[![](https://knowledge.insight-lab.co.jp/hubfs/30days_logo.png)](https://knowledge.insight-lab.co.jp/aidx/30daysofstreamlit-day23-st.experimental_get_query_params)

###### [#30DaysOfStreamlit Day23 st.experimental\_get\_query\_params](https://knowledge.insight-lab.co.jp/aidx/30daysofstreamlit-day23-st.experimental_get_query_params)

###### [次の投稿](https://knowledge.insight-lab.co.jp/aidx/30daysofstreamlit-day25-st.session_state)

[![](https://knowledge.insight-lab.co.jp/hubfs/30days_logo.png)](https://knowledge.insight-lab.co.jp/aidx/30daysofstreamlit-day25-st.session_state)

###### [#30DaysOfStreamlit Day25 st.session\_state](https://knowledge.insight-lab.co.jp/aidx/30daysofstreamlit-day25-st.session_state)

##### INFORMATION

INFORMATION

- [会社概要](https://www.insight-lab.co.jp/about/company.html)
- [お問い合わせ](https://www.insight-lab.co.jp/contact.html)

##### MENU

MENU

- [AIDXナレッジ](https://knowledge.insight-lab.co.jp/aidx)
- [NEWS AI SEARCH](https://solution.insight-lab.co.jp/ai/news-ai-search)

[![INSIGHT LAB](https://knowledge.insight-lab.co.jp/hs-fs/hubfs/INSIGHT%20LAB_%E6%96%87%E5%AD%97%E3%81%AE%E3%81%BF_WHT-1.png?width=200&height=55&name=INSIGHT%20LAB_%E6%96%87%E5%AD%97%E3%81%AE%E3%81%BF_WHT-1.png "INSIGHT LAB")](https://www.insight-lab.co.jp/)

- [プライバシーポリシー](https://www.insight-lab.co.jp/privacy.html)

Copyright © 2020 INSIGHT LAB, Inc.

<https://www.facebook.com/AI-Knowledge-204095220273271>