computer engineering

Python - 파이썬이 돌아가는 원리

제이훈 : 세상 모든 지식의 탐구자 2025. 5. 3. 23:52

파이썬 프로그램이 돌아가는 원리

1. 소스 코드 작성 (.py 파일)

사람이 읽을 수 있는 텍스트 코드
print("Hello, world!")
✔ 설명: .py 확장자 파일로 저장

2. 인터프리터가 소스 코드 읽음

python hello.py 실행 시 인터프리터 동작
✔ 설명: 기본 구현체는 CPython

3. 파서 → 바이트코드 생성

문법 분석 후 AST 생성
AST를 바이트코드로 컴파일
✔ 설명: .pyc 파일로 캐싱 가능

4. Python VM이 바이트코드 실행

바이트코드 한 줄씩 해석
객체 생성, 변수 할당, 연산 수행

5. 런타임 동작

- 메모리 관리 (GC)
- 예외 처리
- 동적 타이핑 및 흐름 제어

6. 결과 출력 또는 에러 발생

정상 실행 시 출력
예외 발생 시 Traceback 표시

파이썬 실행 구조 요약

.py → 파서 → .pyc → Python VM → 실행

인터프리트란?

✔ 정의: 코드를 실시간 해석해 실행
❌ 반대: 컴파일은 전체 코드 변환 후 실행

인터프리트 언어 vs 컴파일 언어

인터프리트: 한 줄씩 실행, 느림, 디버깅 쉬움 (Python, JS)
컴파일: 전체 변환 후 실행, 빠름, 빌드 필요 (C, C++, Go)

Python Virtual Machine 동작 구조

1. Py_Initialize

실행 환경 초기화

2. run_file → PyRun_SimpleFileExFlags

메인 네임스페이스 생성

3. PyParser_ASTFromFileObject → PyParser_ParseFileObjects

파싱 트리 생성

4. PyParser_ASTFromNodeObject

AST 생성 완료

5. run_mod → PyAST_CompileObject

AST를 바이트코드로 컴파일

6. PyEval_EvalCode → _PyEval_EvalFrameEx

바이트코드 실행 시작

실행 루프

스택 기반 구조
명령어는 데이터 push/pop 방식으로 처리

Program Counter

현재/다음 실행 명령 위치 추적
분기, 조건, 루프에 따라 값 변경 가능

Py_FinalizeEx

실행 종료 후 리소스 정리

🧠 핵심 개념 요약

  • Python VM: C 기반 가상 머신
  • AST: 추상 구문 트리
  • Bytecode: VM 해석용 중간 코드
  • Execution Loop: 명령어 루프
  • Program Counter: 명령어 위치 추적
  • Stack 기반: 연산 시 push/pop 사용