platform/python – Python은 어떻게 실행되는가?
들어가며
Python은 인터프리터 언어입니다. 즉, 코드를 한 줄씩 읽고 해석하며 실행합니다.
많은 사람들이 Python을 “스크립트 언어”, “쉽게 배우는 언어”로 알고 있지만, 실제로 Python은 내부적으로 매우 정교한 실행 구조를 가지고 있습니다.
CPython,
PyPy, GIL(Global Interpreter Lock), 바이트코드, 가상 머신 등 복잡한 실행 플랫폼 구조가 숨어 있습니다.
(
Python은 단순히 .py 파일을 읽어 실행하는 것이 아니라, 바이트코드로 변환하고, 가상 머신(PVM)에서 동작하는 구조를 가지고 있습니다.
또한 Python은 CPython 외에도 PyPy, Jython, IronPython 등 다양한 실행 플랫폼을 통해 속도, 확장성, 호환성에 따라 선택적으로 활용될 수 있습니다.
)
이 카테고리에서는 Python의 런타임 구조(Python의 실행 흐름), 인터프리터 종류와 구조, 실행 방식, 메모리 관리 방식, 성능 관련 내부 동작 등 플랫폼적인 관점에서 Python이 어떻게 돌아가는지를 간단하고 명확하게 설명합니다.
Python 실행 구조 한눈에 보기(Python 실행의 실제 흐름)
.py 소스 파일
↓ (파싱) CPython 인터프리터가 파싱 후 AST(Abstract Syntax Tree) 생성
AST(Abstract Syntax Tree)
↓ (컴파일) 바이트코드로 컴파일 → .pyc 파일 생성
Bytecode (.pyc)
↓
Python Virtual Machine (PVM) → 바이트코드를 실행
- Python은 소스 코드를 AST → 바이트코드 → 가상 머신 실행으로 처리함
- 이 과정을 CPython 인터프리터가 내부적으로 자동으로 처리함
주요 플랫폼 개념 정리
✅ CPython
- 가장 널리 사용되는 Python 구현체 (C언어로 구현됨)
- 기본적으로 우리가 사용하는 python 명령어는 대부분 CPython을 뜻함
✅ PyPy
- JIT(Just-In-Time) 컴파일러가 포함된 고성능 구현체
- 루프 기반 연산에서 CPython보다 훨씬 빠름
✅ Jython
- JVM 기반에서 실행되는 Python
✅ GIL (Global Interpreter Lock)
- 멀티스레드 환경에서도 하나의 스레드만 실행 가능한 제약 요소
- CPU 바운드 작업에서 병렬 처리 성능 저하의 원인
✅ Garbage Collector
- 참조 카운트 + 순환 감지를 활용한 메모리 관리
✅ 바이트코드 (.pyc)
- Python은 인터프리터지만, 실행 전 .py 파일을 바이트코드로 컴파일함
- 바이트코드는 플랫폼 독립적이며, Python VM에서 실행됨
메모리 관리와 GC
- Python은 참조 카운트(reference count) 기반으로 메모리 관리
- 순환 참조는 GC(generation-based garbage collector)가 추가로 처리
- gc 모듈로 수동 제어 가능
앞으로 다룰 주제 예시 (플랫폼 관점)
- Python 인터프리터 종류별 차이 (CPython vs PyPy vs Jython 비교)
- GIL(Global Interpreter Lock)의 구조 원리와 병목, 멀티프로세싱 우회 전략
- 객체 참조 카운트와 메모리 회수 타이밍 (Python 런타임과 메모리 모델 분석)
- sys.getrefcount(), gc 모듈 사용법 (.pyc 캐싱 구조와 import 시스템)
- venv와 conda 환경 구조, 환경 격리 방
- 실행 최적화 전략과 JIT 기반 구현체 분석
- C 확장과 Native 라이브러리 연동 구조
Python을 단순한 스크립트 언어가 아닌 런타임 플랫폼으로 이해하는 데 도움이 될 내용을 중심으로 구성해 나갈 예정입니다.
마치며
Python은 단순한 언어가 아니라 유연한 플랫폼입니다.
Python이 어떻게 동작하는지를 이해하면, 단순한 코드 작성에서 벗어나 성능, 메모리 최적화, 병렬 처리 전략까지 확장된 시야로 다룰 수 있게 됩니다.
📂 platform/python 카테고리에서는 Python 내부 구조를 파헤치며, 실무에서 도움이 되는 런타임 기반 지식을 계속 이어갈 예정입니다.
📌 다음 글 미리보기
👉 Python 인터프리터 종류별 차이 (CPython vs PyPy vs Jython 비교)
📚 플랫폼 Python 시리즈 전체 보기
👉 https://jobreview.tistory.com/category/platform_infra_cloud/python
댓글