Jay's Cookbook
Menu
  • Tags
  • Categories
  • Projects
Computer Science
OS
Network
Data Structure
Algorithm
Language
Code Architecture
Python
Javascript
Typescript
Java
Backend
Backend Theory
TypeORM
Node.js
NestJS
FastAPI
Frontend
HTML/CSS
React
Next.js
Data Engineering
DE Theory
MySQL
MongoDB
Elastic
Redis
Kafka
Spark
Airflow
AI
Basic
Pytorch
NLP
Computer Vision
Data Analytics
Statistics
Pandas
Matplotlib
DevOps
Git
Docker
Kubernetes
AWS
Python Advanced Series [Part1]: 파이썬 코드 동작 원리(Feat.CPython, PyPy)
language
python

Python Advanced Series [Part1]: 파이썬 코드 동작 원리(Feat.CPython, PyPy)

Jay Kim
Jay Kim 16 Feb 2022
Python Basic Series [Part8]: 코딩테스트를 위한 파이썬의 유용한 내장 모듈 heapq Python Advanced Series [Part2]: 파이썬의 메모리 관리(Feat.Garbage Collection)

Table of Contents

  • 파이썬 언어의 특징
  • 파이썬은 인터프린터 언어?
  • 컴파일 언어
  • 인터프리터 언어
  • 파이썬 인터프리터의 종류
    • CPython
    • Jython
    • PyPy
  • 참고

파이썬 언어의 특징

파이썬(Python)은 1980년대 후반 귀도 반 로섬이 개발하고 1991년에 출시한 high-level 범용 프로그래밍 언어입니다. 동적 타입 언어이므로 변수의 타입을 선언할 필요가 없으며, 코드가 실행되어 메모리 관리가 자동으로 수행됩니다.

이번 포스트에서는 파이썬 코드를 실행할 때 어떤 동작이 내부적으로 일어나는지 알아보도록 하겠습니다.

저희가 CLI 환경에서 파이썬 코드를 실행하는 경우를 생각해봅시다.

python my_code.py

여기서 python은 바로 파이썬 인터프리터 프로그램을 의미합니다. 따라서 파이썬 코드는 파이썬 인터프리터를 통해 실행하는 것입니다. (Python Interpreter - Stanford Computer Science 참고)

파이썬은 인터프린터 언어?

위에서 파이썬 인터프리터를 통해 파이썬 코드를 실행한다고 했습니다. 그러면 파이썬은 인터프리터 언어일까요? 과거에 C는 컴파일 언어이고, 쉘 프로그래밍 언어는 인터프리터 언어였기 때문에 이 경계가 비교적 명확했지만, 비교적 최근에 나온 언어들은 그 경계가 모호합니다.

파이썬 또한 어느 정도의 컴파일 언어적 특성과, 인터프리터 언어의 특성을 모두 가지고 있어서 이분법적으로 나누기가 힘들지만 프로그래밍 언어의 대표인 C언어가 완전한 컴파일 언어이기 때문에 이와 구분하기 위해 그냥 편하게 인터프리터 언어라고 하는 것 같습니다. 정리하면 파이썬은 컴파일 언어이기도 하면서 인터프리터 언어이기도 합니다.

컴파일 언어

먼저 간단하게 컴파일 언어의 뜻과 컴파일 언어가 코드를 실행하는 과정에 대해 살펴보겠습니다.

  • 컴파일은 소스코드를 다른 타겟 언어(기계어, 자바, C, 파이썬)로 변환하는 과정을 의미
  • 코드를 실행할 때 코드 전체를 인풋으로 사용
  • 코드는 컴파일 단계에서 한 번 기계어로 변환되어 저장되고 나면 언제든 바로 실행가능
  • 컴파일러는 실행하는 역할이 아니고 기계어로 변환하는 역할

인터프리터 언어

  • 인터프리터 언어는 소스 코드를 바로바로 실행하게 됩니다.
  • 인터프리터는 코드를 한 줄씩 입력으로 사용해 실행합니다.
  • 인터프리터에는 종류마다 다른 실행 방법이 있습니다.
    A. 소스 코드를 파싱해서 설정한 방법에 따라 실행
    B. 소스 코드를 먼저 중간 단계의 바이트 언어로 변환하고 A의 과정을 수행
    C. 컴파일러에 의해 먼저 변환된 코드를 이용해 1의 과정을 수행

파이썬 인터프리터는 이 중 B에 해당합니다.

1. 소스 코드를 컴파일러를 이용해 중간 단계의 바이트 언어의 파일(.pyc)로 변환
2. Python Virual Machine 위에서 바이트 언어 파일 한 줄씩 실행  

파이썬 인터프리터의 종류

CPython

Jython

PyPy

PyPy는 파이썬 언어(RPython: 파이썬의 일부)로 작성된 인터프리터입니다. 디폴트인 CPython과의 호환성을 유지하면서도 CPython 보다 속도가 빠르다고 알려져있습니다.

참고

  • Shalini Ravi, How Does Python Code Run: CPython And Python Difference
  • elhay efrat, Python » CPython
  • geeksforgeeks, Difference between various Implementations of Python
  • 파이썬 언어의 특징
  • 파이썬 인터프리터 고르기
  • Wireframe: 파이썬은 인터프리터언어입니까?
Python Basic Series [Part8]: 코딩테스트를 위한 파이썬의 유용한 내장 모듈 heapq Python Advanced Series [Part2]: 파이썬의 메모리 관리(Feat.Garbage Collection)

You may also like

See all python
01 May 2022 Python Advanced Series [Part5]: 파이썬으로 배우는 객체지향 프로그래밍 (2)
language
python

Python Advanced Series [Part5]: 파이썬으로 배우는 객체지향 프로그래밍 (2)

01 May 2022 Python Advanced Series [Part5]: 파이썬으로 배우는 객체지향 프로그래밍 (1)
language
python

Python Advanced Series [Part5]: 파이썬으로 배우는 객체지향 프로그래밍 (1)

17 Feb 2022 Python Advanced Series [Part5]: Code Documenting
language
python

Python Advanced Series [Part5]: Code Documenting

Jay Kim

Jay Kim

Web development, data engineering for human for the Earth. I share posts, free resources and inspiration.

Rest
Lifestyle
Hobby
Hobby
Hobby
Hobby
2025 © Jay's Cookbook. Crafted & Designed by Artem Sheludko.