Streamlit 실시간 업데이트 사용하기

Streamlit 실시간 업데이트 사용하기

Streamlit
Streamlit 실시간 업데이트 사용하기
Author

gabriel yang

Published

September 18, 2024


Streamlit은 간단한 파이썬 코드로 대화형 웹 애플리케이션을 개발할 수 있는 라이브러리입니다. 특히 실시간 데이터를 업데이트하여 사용자에게 동적인 정보를 제공하는 데 매우 적합합니다. 이 글에서는 Streamlit에서 실시간 업데이트를 적용하는 방법을 예시와 함께 설명하겠습니다.

1. Streamlit 기본 개념

Streamlit은 파이썬을 이용해 손쉽게 웹 애플리케이션을 만들 수 있는 도구로, 복잡한 프론트엔드 작업 없이도 대화형 UI를 만들 수 있습니다. 특히, 데이터 시각화나 머신러닝 모델의 결과를 실시간으로 웹에 반영할 때 유용합니다.

Streamlit 설치 및 기본 사용법

Streamlit을 설치하려면 터미널에서 다음 명령어를 실행합니다:

pip install streamlit

설치 후, 간단한 앱을 실행하는 방법은 다음과 같습니다:

import streamlit as st

st.title('Hello, Streamlit!')
st.write('이것은 기본적인 Streamlit 앱입니다.')

앱을 실행하려면:

streamlit run app.py

이 명령어를 실행하면 브라우저에서 localhost를 통해 앱을 확인할 수 있습니다.

2. 실시간 업데이트 적용 방법

Streamlit에서 실시간 업데이트를 적용하는 핵심 요소는 st.empty()time.sleep()을 사용하는 것입니다. st.empty()는 특정 위치에 동적으로 변하는 데이터를 표시할 수 있는 컨테이너를 만들며, time.sleep()은 일정 간격으로 화면을 업데이트하는 데 사용됩니다.

실시간 업데이트를 위한 기본 구조

  1. st.empty()로 업데이트할 공간을 생성합니다.
  2. 데이터를 반복적으로 갱신합니다.
  3. time.sleep()을 사용하여 일정 주기로 업데이트합니다.

이 기본 구조를 바탕으로 Streamlit에서 실시간 데이터를 갱신하는 방법을 구현할 수 있습니다.

3. 예시: 실시간 데이터 시각화

이제 실시간 데이터를 스트리밍하는 간단한 예제를 만들어 보겠습니다. 예시에서는 임의의 데이터를 실시간으로 업데이트하며, 라인 차트로 시각화할 것입니다.

import streamlit as st
import numpy as np
import pandas as pd
import time

# 제목 설정
st.title('실시간 데이터 업데이트 예시')

# 데이터 초기화
data_placeholder = st.empty()  # 실시간으로 데이터를 업데이트할 공간
chart_placeholder = st.empty()  # 실시간 차트를 보여줄 공간

# 빈 데이터프레임 생성
df = pd.DataFrame(columns=['시간', '랜덤 값'])

# 10초 동안 매 1초마다 데이터 업데이트
for i in range(10):
    # 임의의 데이터를 생성
    new_data = pd.DataFrame({
        '시간': [i],
        '랜덤 값': [np.random.randn()]
    })

    # 데이터프레임에 새 데이터를 추가
    df = pd.concat([df, new_data])

    # 실시간 데이터를 표로 표시
    data_placeholder.table(df)

    # 실시간 데이터를 라인 차트로 표시
    chart_placeholder.line_chart(df.set_index('시간'))

    # 1초 대기
    time.sleep(1)

코드 설명

  1. 데이터 초기화: st.empty()를 사용하여 데이터를 실시간으로 업데이트할 공간과 차트를 위한 공간을 마련합니다.
  2. 데이터 생성 및 추가: 매번 np.random.randn()으로 임의의 데이터를 생성하여 데이터프레임에 추가합니다.
  3. 표와 차트 업데이트: st.table()st.line_chart()를 사용하여 매번 업데이트된 데이터를 표와 차트로 실시간 반영합니다.
  4. 시간 지연: time.sleep(1)을 사용하여 1초마다 화면이 업데이트되도록 설정합니다.

이 코드는 10초 동안 매 1초마다 데이터가 갱신되며, 실시간으로 표와 차트가 업데이트되는 것을 확인할 수 있습니다.

4. 결론

이 글에서는 Streamlit에서 실시간 업데이트를 적용하는 방법을 살펴보았습니다. st.empty()time.sleep()을 사용하면 손쉽게 실시간 데이터를 스트리밍하거나 시각화할 수 있습니다. Streamlit의 간단한 문법과 강력한 기능을 활용하여 다양한 대화형 애플리케이션을 만들 수 있으며, 실시간 데이터 업데이트는 특히 데이터 분석이나 모니터링 시스템에 유용하게 적용할 수 있습니다.