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 사용