오늘도 개발

파이썬 인터프리터와 파이썬의 실행 과정 본문

웹 프로그래밍/Python3

파이썬 인터프리터와 파이썬의 실행 과정

Sueeeeeee 2022. 5. 30. 17:51

인터프리팅과  컴파일

파이썬은 기본적으로 인터프리팅 언어이다.

하지만 파이썬도 컴파일 과정을 거친다. 

 

보통 컴파일 언어는 컴파일 단계에서 소스코드를 0과 1로 된 머신코드로 바꾼다.

 

하지만 파이썬은 컴파일 단계에서 소스코드를 바이트코드(byte code)로 바꾼다.

바이트코드는 머신코드에 가깝지만 머신코드는 아니기 때문에 CPU에서 직접 실행할 수 없다.

그래서 바이트코드는 파이썬의 VM(Virtual Machine)에서 인터프리팅 과정을 거쳐야 한다.

파이썬의 VM은 바이트코드를 머신코드로 한 줄씩 바꿔 CPU에게 전달하고,

CPU는 전달받은 머신코드를 한 줄씩 실행한다.

파이썬 인터프리터 안에 컴파일러도 있고 VM도 있지만 VM을 인터프리터라고 부를 때도 있다.

실제로 인터프리팅이 일어나는 곳은 VM이기 때문이다.

 

파이썬은 코드의 컴파일과 인터프리팅에 CPU가 관여하지 않는다.

그렇기 때문에 한 소스코드는 어떤 CPU를 사용하는 컴퓨터에서든 실행할 수 있다. (=이식성)

윈도우에서 돌아가는 파이썬 코드는 리눅스, 맥 등 어디서든 돌아간다는 뜻이다.

이식성 : 어떤 프로그램을 여러 OS에서 사용할 수 있는 것

 

파이썬의 실행 과정

test.py 파일을 작성한 후 터미널에서 python3 test.py를 입력해서 실행하면 다음과 같은 일이 일어난다.

여기서 python3는 python3라는 프로그램을 실행하라는 명령인데

이 프로그램이 바로 파이썬 인터프리터이다.

1) python3 키워드로 파이썬 인터프리터를 실행

2) Lexing : Lexer가 코드를 의미있는 단위(token)으로 나눔

3) Parsing : Parser가 토큰으로 AST(Abstract Syntax Tree) 생성

     AST란? 소스 코드를 문법 구조에 맞춰 트리 형태로 표현한 것

4) Compiling : Compiler가 AST를 바이트코드로 변환하고 새 파일(test.pyc)에 저장. 

5) Interpreting : VM이 바이트코드 파일을 한 줄씩 머신코드로 바꿔서 CPU에 전달

6) CPU가 받은 머신코드 실행

 

파이썬 인터프리터

인터프리터는 파이썬을 구현한다.

(여기서 말하는 인터프리터는 컴파일러와 VM을 아우르는 넓은 개념의 인터프리터이다.)

 

다른 언어와 달리 파이썬은 구현 방법에 대한 공식 문서가 없다.

파이썬을 구현하는 방법은 한 가지가 아니기 때문이다.

인터프리터가 파이썬을 구현하며 인터프리터의 종류에 따라 파이썬은 조금씩 다르게 구현된다.

 

인터프리터에는 Cpython, PyPy, IronPython 등 여러 종류가 있는데

가장 흔히 사용하는 인터프리터는 C 언어로 작성된 CPython이다. 

python.org의 파이썬 다운로드 버튼을 클릭하면 받을 수 있는 파일은 사실 Python이 아니라 Cpython이다. 

 

 

참고

what is bytecode in Python

Python Interpreter - Introduction

what is the Python Interpreter? (How does Python Work?)

An introduction to Python bytecode

'웹 프로그래밍 > Python3' 카테고리의 다른 글

CPython이 변수를 처리하는 방법  (0) 2022.06.01
파이썬 문자열(String)  (0) 2022.06.01
파이썬 숫자형에 사용하는 연산자  (0) 2022.06.01
파이썬의 자료형  (0) 2022.06.01
파이썬의 특징  (0) 2022.05.30