> ## Documentation Index
> Fetch the complete documentation index at: https://docs.coreweave.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Reactive execution in notebooks

노트북은 변수 의존성에 따라 셀을 실행하며, 페이지에 셀이 나타나는 순서가 아닙니다. 셀 B가 셀 A에서 정의된 변수를 읽는 경우, 셀 B는 셀 A에 의존합니다. 셀 A는 셀 B의 업스트림이며, 셀 B는 셀 A의 다운스트림입니다.

업스트림 셀이 실행되면, 노트북은 다운스트림 셀을 다시 실행하여 출력이 최신 값을 반영하도록 할 수 있습니다. 셀이 자동으로 실행되는지 여부는 노트북의 [런타임 설정](/ko/products/notebooks/configure-notebook#configure-startup-behavior)에 따라 달라집니다.

노트북은 정의와 레퍼런스를 추적하여 의존성을 확인합니다:

* *정의*는 셀이 생성하는 전역 이름으로, 변수, 함수, 클래스 또는 임포트된 이름 등이 있습니다.
* *레퍼런스*는 셀이 다른 셀에서 읽어오는 전역 이름입니다.

자세한 내용은 marimo의 [How marimo runs cells](https://docs.marimo.io/guides/reactivity/#how-marimo-runs-cells)를 참조하세요.

<h2 id="stale-and-blocked-cells">
  stale 셀과 차단된 셀
</h2>

노트북은 각 셀의 상태를 추적하여 실행이 필요한지 확인합니다. 주요 셀 상태는 *stale*과 *차단됨*입니다.

<h3 id="stale-cells">
  stale 셀
</h3>

셀이 한 번도 실행되지 않았거나 최신 코드 또는 입력으로 실행되지 않았다면 *stale* 상태입니다. 현재 코드와 입력으로 실행되면 더 이상 stale 상태가 아닙니다.

다음 상황에서는 셀이 stale 상태가 됩니다:

* 셀의 코드를 편집합니다.
* 노트북이 [지연](/ko/products/notebooks/configure-notebook#lazy-mode) 모드를 사용하는 동안 업스트림 셀이 실행됩니다. 이 모드에서는 노트북이 다운스트림 셀을 자동으로 실행하는 대신 stale 상태로 표시합니다.
* 지연 모듈 자동 다시 로드가 활성화된 상태에서 셀이 사용하는 Python 모듈이 변경됩니다.

stale 셀을 실행하여 출력을 업데이트하세요. 업스트림 셀 중 stale 셀이 있으면 노트북이 해당 셀을 먼저 실행합니다. 모든 stale 셀을 한 번에 실행할 수도 있습니다.

<h3 id="blocked-cells">
  차단된 셀
</h3>

셀 또는 해당 셀의 업스트림 셀 중 하나가 비활성화된 경우 셀이 *차단*됩니다. 차단된 셀은 입력이 변경되더라도 자동으로 실행되지 않습니다.

셀의 차단을 해제하려면, 해당 셀이 의존하는 비활성화된 셀을 다시 활성화하세요. 그러면 노트북이 stale 상태의 다운스트림 셀 중 업데이트된 출력이 필요한 셀을 실행할 수 있습니다. 지침은 [셀 비활성화 또는 활성화](/ko/products/notebooks/run-notebook-cells#disable-or-enable-a-cell)를 참조하세요.

<h2 id="delete-cells">
  셀 삭제
</h2>

셀을 삭제하면 노트북은 해당 셀이 정의한 전역 변수도 함께 삭제합니다. [런타임 설정](/ko/products/notebooks/configure-notebook#configure-startup-behavior)에 따라, 노트북은 삭제된 변수를 참조하는 셀을 다시 실행하거나 무효화하거나 stale로 표시합니다.

<h2 id="define-each-global-name-once">
  각 전역 이름을 한 번만 정의하세요
</h2>

각 전역 이름을 하나의 셀에만 정의하세요. 두 개의 셀이 동일한 전역 이름을 정의하면, 노트북은 다운스트림 셀에 대한 단일 진실 공급원을 확인할 수 없습니다. 이 제한은 변수, 함수, 클래스 및 임포트된 패키지 이름에 적용됩니다.

임시 변수의 경우, [변수 이름 앞에 밑줄 하나를 접두사로 붙여](https://docs.marimo.io/guides/reactivity/#creating-local-variables) 셀에 로컬로 만드세요. 또한 [함수 내부에 임시 변수를 정의](https://docs.marimo.io/guides/reactivity/#encapsulating-code-in-functions)할 수도 있습니다.

<h2 id="avoid-mutations-across-cells">
  셀 간 변형 방지
</h2>

여러 셀이 사용하는 객체의 변형을 피하세요. 노트북은 객체 변형을 추적하지 않으므로, 객체를 변형해도 종속 셀이 stale로 표시되지 않습니다.

예를 들어, 한 셀이 다른 셀에서 정의된 데이터프레임에 열을 추가한다고 가정해 보세요. 데이터프레임을 참조하는 셀은 자동으로 다시 실행되지 않습니다. 노트북 상태를 일관되게 유지하려면 새 객체를 생성하고 새 변수에 부여하세요. 객체를 변형해야 하는 경우, 해당 객체를 정의하는 셀에서 변형하세요.

자세한 내용은 [Variable mutations are not tracked](https://docs.marimo.io/guides/reactivity/#variable-mutations-are-not-tracked)를 참조하세요.

<h2 id="inspect-variables-and-dependencies">
  변수 및 의존성 검사
</h2>

<h3 id="view-variables">
  변수 보기
</h3>

[Variables explorer](https://docs.marimo.io/guides/editor_features/dataflow/#variables-explorer)를 사용하여 정의된 변수, 해당 유형, 선언 위치, 참조 위치를 확인하세요.

<Frame>
  <img src="https://mintcdn.com/coreweave-dbfa0e8d/3Dv_sw2eg8feUJlx/products/notebooks/_media/variable_dependencies.png?fit=max&auto=format&n=3Dv_sw2eg8feUJlx&q=85&s=c34eec9355607c7db9d65cf009d7ae53" alt="종속 노트북 셀 간의 변수 흐름" width="5960" height="2068" data-path="products/notebooks/_media/variable_dependencies.png" />
</Frame>

셀 간의 심볼과 연결에 대해 자세히 알아보려면 다음을 참조하세요:

* [Cell symbols](https://docs.marimo.io/guides/editor_features/dataflow/#cell-symbols)
* [Reading cell connections](https://docs.marimo.io/guides/editor_features/dataflow/#reading-cell-connections)

<h3 id="view-cell-relationships-in-the-minimap">
  미니맵에서 셀 관계 뷰
</h3>

[의존성 패널](https://docs.marimo.io/guides/editor_features/dataflow/#dependencies-panel)을 사용하여 셀 간의 관계를 확인하세요:

1. 사이드바에서 **의존성 탐색** (<Icon icon="sitemap" iconType="solid" />)을 선택하세요.
2. **MINIMAP**을 선택하세요.

<h3 id="view-the-dependency-graph">
  의존성 그래프 뷰
</h3>

[Graph view](https://docs.marimo.io/guides/editor_features/dataflow/#graph-view) 를 사용하여 셀 의존성을 방향 비순환 그래프(DAG)로 시각화하세요:

1. 사이드바에서 **의존성 탐색** (<Icon icon="sitemap" iconType="solid" />) 를 선택하세요.
2. **GRAPH** 를 선택하세요.

노드를 이동, 확대/축소, 재배치하여 셀 간의 관계를 탐색하세요.
