실행 컨텍스트

개요

Shiny 대화형 문서는 렌더링 시점에 실행되는 코드와, 사용자 동작 및 입력 값 변경에 반응해 서버에서 실행되는 코드를 모두 포함합니다. 실행 컨텍스트를 잘 이해하면 개발 시 올바른 모델을 세울 수 있고 문서 성능도 최적화할 수 있습니다.

기본 실행

기본적으로 문서의 모든 Python 코드는 두 시점에 실행됩니다.

  1. quarto render 또는 quarto preview로 문서를 렌더링할 때

  2. 문서에서 생성된 Shiny 애플리케이션에 새로운 사용자가 연결할 때

문서 렌더 시간이 짧다면 이 기본 실행 패턴으로 충분하며, 실행 컨텍스트 최적화를 더 고민하지 않아도 됩니다.

설정 컨텍스트

많은 문서에는 필요한 패키지와 데이터를 불러오는 설정 코드가 포함됩니다. 이 설정 코드가 몇 초 이상 걸린다면 context: setup 셀 옵션으로 명시적으로 설정 코드로 지정하는 것이 좋습니다. 예:

```{python}
#| context: setup
import seaborn as sns
penguins = sns.load_dataset("penguins")
```

셀에 context: setup을 추가하면 해당 코드 셀은 다음 시점에 실행됩니다.

  1. quarto render 또는 quarto preview로 문서를 렌더링할 때

  2. Shiny 애플리케이션이 시작될 때(기본 동작은 새 사용자가 연결될 때마다 실행)

context: setup으로 설정 코드를 명시하는 것은 대부분의 경우 필요한 유일한 실행 컨텍스트 지정입니다. context: setup은 가장 흔한 성능 문제를 해결할 뿐 아니라, 코드 구조도 단순하고 이해하기 쉽게 유지합니다(문서의 모든 데이터와 함수가 렌더 및 서빙 시점 모두에서 사용 가능).

UI 컨텍스트

문서에 오직 사용자 인터페이스에만 기여하고 서버에서 실행될 필요가 없는 셀이 있을 수도 있습니다. 예를 들어 입력 변경에 따라 동적으로 다시 그려지지 않는 정적 시각화가 여기에 해당합니다.

호출을 UI 전용으로 지정하려면 context: ui 셀 옵션을 사용합니다. 예:

```{python}
#| context: ui

# plot that isn't ever updated after initial rendering 
sns.lmplot(
    data=penguins,
    x="bill_length_mm", y="bill_depth_mm", hue="species",
    height=5
)
```

context: ui 셀은 quarto render 중에만 실행됩니다. 이 셀에서 생성된 코드와 데이터는 애플리케이션이 서빙될 때 사용할 수 없습니다.

더 알아보기

Python용 Shiny 대화형 문서에 대해 더 알아보려면 다음 문서를 참고하세요.

  • 시작하기는 Shiny 대화형 문서의 기본을 설명합니다.

  • 컴포넌트 브라우저는 사용 가능한 Shiny 입력과 출력, 그리고 대시보드에 복사해 사용할 수 있는 코드 스니펫을 정리합니다.

  • 입력 레이아웃는 입력을 배치하는 다양한 방법(사이드바, 입력 패널, 입력을 카드에 직접 연결 등)을 설명합니다.

  • 대시보드 실행는 VS Code, Positron, 그리고 명령줄에서 대화형 대시보드를 실행하고 사용자에게 배포하는 방법을 다룹니다.

  • Python용 Shiny은 사용 가능한 모든 UI 및 출력 위젯에 대한 심화 문서와 동작 개념을 제공합니다.