본문 바로가기
Streamlit

[Streamlit] Session state란?

by ISLA! 2023. 8. 1.

Session state란?

 

  • session state 는 streamlit 애플리케이션 내에서 상태를 유지하고 다루는데 사용되는 변수

 

왜 필요할까? 

 

  • 일반적으로 Streamlit은 상태를 유지하지 않음
  • 사용자가 애플리케이션과 상호작용할 때마다 각 요청은 새로운 상태를 생성함
    • 이러한 방식은 일반적으로 웹 애플리케이션에서 세션이 유지되지 않는 상태로 동작함
    • 각 요청 간 이전 상태가 유지되지 않기 때문

 

  • session state를 사용하면, 특정한 요청들 간에도 상태를 유지할 수 있음

     👉 이를 통해, streamlit 어플리케이션을 사용자 친화적으로 만들 수 있음

     👉 데이터 처리하는 동안 임시로 상태를 유지하는 데 유용함

 

 

streamlit에서 session state 사용법

 

👉 sessionState 라는 커스텀 클래스를 만들어 사용

👉 커스텀 클래스 만드는 예시는 아래와 같다

import streamlit as st

class SessionState:
    def __init__(self, **kwargs):
        for key, value in kwargs.items():
            setattr(self, key, value)

# 사용 예시
def main():
    state = SessionState(user_name="", user_age=0)

    user_name = st.text_input("이름을 입력하세요:", state.user_name)
    user_age = st.number_input("나이를 입력하세요:", value=state.user_age)

    state.user_name = user_name
    state.user_age = user_age

    st.write(f"이름: {state.user_name}, 나이: {state.user_age}")

if __name__ == "__main__":
    main()
  • 예시에서 SessionState 클래스는 user_name 과 user_age 라는 상태를 유지함
  • 사용자가 입력 필드를 통해 이름과 나이를 입력하고, 이는 state 객체를 통해 유지됨
  • 이를 통해 애플리케이션 내에서 사용자와 관련된 정보를 저장하고 다룰 수 있게 됨

 

더 자세한 내용이 궁금하다면 공식 홈페이지도 참고해보자!


[ 공식 홈페이지 ]

https://docs.streamlit.io/library/api-reference/session-state

 

Streamlit Docs

Join the community Streamlit is more than just a way to make data apps, it's also a community of creators that share their apps and ideas and help each other make their work better. Please come join us on the community forum. We love to hear your questions

docs.streamlit.io

 

728x90