0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

streamlit のデータの流れまとめ

Posted at

背景

streamlitを触っているとたまにデータの流れや処理の流れで混乱するのでまとめておきます

基本はこれ

  • スクリーン上の何かが更新されたら、Streamlitのスクリプトが再実行されます
    • コードが修正された時
    • ユーザーがapp上でwidgetsとインタラクトした時
  • on_changeやon_clickが呼ばれるとその時点でcallbackが呼ばれます

cacheとsession

sessionとcacheの違い

  • cacheは全てのsessionの全てのユーザーに対して利用できる
  • sessionはsingle sessionでのに利用できる

chacheとは

sessionとは

  • appを見るためのinstance
  • 2つのタブからあるappを表示している場合、そのブラウザは2つのsessionを持っている
  • ブラウザをリフレッシュしたり、リロードするとsessionはリセットされる

formとは

  • 基本入力欄に更新があると、streamlitはスクリプトを上から下まで上から下まで再実行され、アプリのフロントエンドが更新されるが、form内のインプットはsubmitされるまで再実行が走りません

framgmentsとは

  • fragmentsを定義すると、再実行するスコープを定義できます

入力欄の実行順序

入力欄に値を入力すると

  1. st.session_state の値が更新される
  2. コールバック関数(もしあれば)が実行される
  3. ページが再実行され、ウィジェット関数が新しい値を返す

コールバックの処理

  • コールバック関数はスクリプト再実行の前に実行されます
    • コールバック関数が画面に何かを表示する場合、その内容はページの他の部分よりも上に表示されます
  • コールバック関数にargs経由で引数を渡す場合は、inputの返り値を渡さない
    • 返りが値を持つのは次の再実行時なので、渡したい場合は、st.session_state経由で渡す
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?