바이트 코드, 컴파일, 인터프리팅 개념 정리

SeongGyun Hong·2025년 2월 7일

Python

목록 보기
18/34

바이트코드, 컴파일, 인터프리팅 개념 정리

파이썬(CPython)은 컴파일과 인터프리팅을 모두 수행하는 언어이다.
이를 이해하기 위해 컴파일(Compile), 바이트코드(Bytecode), 인터프리팅(Interpreting) 개념을 살펴보자...


1. 컴파일(Compile)

컴파일이란 프로그래밍 언어로 작성된 코드를 기계어로 변환하는 과정을 말한다.
즉, 사람이 작성한 코드를 컴퓨터가 이해할 수 있는 언어로 변환하는 것이라고 볼 수 있음.

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

구분설명대표적인 언어
컴파일 언어전체 코드를 한 번에 번역하여 실행 파일(기계어) 생성C, C++, Java(부분적으로)
인터프리터 언어한 줄씩 읽고 즉시 실행Python, JavaScript

예를 들어, C 언어에서는 gcc 같은 컴파일러(Compiler)가 전체 코드를 번역하여 .exe 같은 실행 파일을 만들고, 이 파일을 실행하면 CPU가 직접 기계어를 실행하므로 속도가 빠르다.

// C 언어 예제 (컴파일 필요)
#include <stdio.h>
int main() {
    printf("Hello, World!\n");
    return 0;
}

(위 코드는 gcc 컴파일러를 사용하여 기계어로 변환된 실행 파일을 만들어야 실행할 수 있음)


2. 바이트코드(Bytecode)

바이트코드는 CPU가 직접 실행할 수 없는 중간 코드(Intermediate Code)이다.
즉, 완전한 기계어가 아니며, 특정 가상 머신(Virtual Machine)이 실행할 수 있도록 변환된 코드인 것.

파이썬의 바이트코드 변환 과정

파이썬은 다음과 같은 단계를 거쳐 실행됨.
1. .py 소스 코드를 바이트코드(.pyc)로 변환(컴파일 단계)
2. 바이트코드를 인터프리터(PVM, Python Virtual Machine)가 실행(인터프리팅 단계)

# Python 코드 예제
print("Hello, World!")

위 코드를 실행하면, CPython은 내부적으로 바이트코드를 생성하고 이를 실행.

바이트코드 파일(.pyc)은 __pycache__ 폴더에 저장될 수 있음.

아.... pycache 안에 있던 pyc가 그거구나...

__pycache__/
    my_script.cpython-310.pyc

💡 즉, 바이트코드는 기계어가 아니라, 파이썬 인터프리터(PVM)가 이해할 수 있는 중간 코드!


3. 인터프리팅(Interpreting)

인터프리팅이란 코드를 한 줄씩 읽고 바로 실행하는 방식 (직독직해)
파이썬 인터프리터(CPython)는 바이트코드를 실행하는 역할을 함.

인터프리팅 방식의 특징

  • 빠른 개발 속도: 실행 전에 전체 컴파일이 필요 없으므로 코드 수정 후 바로 실행이 가능.
  • 즉시 실행: 한 줄씩 실행되므로, 인터랙티브 개발이 가능 (REPL 환경 사용 가능).

    Read (읽기) → 사용자의 입력을 읽음
    Eval (평가) → 입력된 코드를 실행 (평가)
    Print (출력) → 실행 결과를 출력
    Loop (반복) → 위 과정을 계속 반복
    즉, REPL은 터미널에서 바로 실행할 수 있는 인터랙티브 코드 실행 환경

  • 비교적 느린 속도: 매번 코드를 해석하며 실행하기 때문에 컴파일된 코드보다는 느림.
# Python 인터프리터 사용 예시
>>> print("Hello, World!")
Hello, World!

위 코드가 실행되면, CPython 인터프리터가 바이트코드로 변환한 후 이를 실행함.


4. 정리: CPython의 실행 과정

CPython은 컴파일과 인터프리팅을 결합한 방식을 사용합니다.

  1. 컴파일 단계
    • .py 파일을 바이트코드(.pyc)로 변환
    • 바이트코드는 CPU가 직접 실행할 수 없고, 파이썬 인터프리터(PVM)가 실행해야 함
  2. 인터프리팅 단계
    • PVM(Python Virtual Machine)이 바이트코드를 한 줄씩 읽고 실행

파이썬 코드 실행 흐름

Python 코드 (.py)
      ↓ ① 컴파일 (바이트코드 변환)
바이트코드 (.pyc)
      ↓ ② 인터프리팅 (PVM 실행)
실행 결과 출력

5. 결론

컴파일(Compile): 코드를 기계어로 변환하는 과정
바이트코드(Bytecode): 기계어와 인터프리팅의 중간 단계 코드
인터프리팅(Interpreting): 바이트코드를 한 줄씩 읽어 실행하는 과정
CPython컴파일 + 인터프리팅을 동시에 수행하는 방식으로 동작

즉, 파이썬은 인터프리터 언어지만, 실행 전에 바이트코드로 변환하는 일종의 컴파일 과정을 거친다

profile
헤매는 만큼 자기 땅이다.

0개의 댓글