본문 바로가기
프로그래밍/python

[python] python 코드가 실행되는 원리.

by 노잼인간이라불립니다 2023. 4. 6.

회사에서 진행하는 이번 프로젝트는 python을 활용 할 예정이다.

 

이와 관련하여 이야기를 나누다가 내가 전에는 생각지 못했던 python의 코드가 실행되는 원리에 대한 이슈가 나왔고,

 

그에 대해 검색 후 깨달음을 얻고 정리 해보고자 한다.

 


일단 이전까지만 해도 python은 인터프리터 언어, c, java는 컴파일 언어 라는 것을 암기식으로만 알고 있었다.

 

취업 때문이긴 하지만 내 근본인 java 코드가 java 컴파일러를 통해 .class 파일로 변환되고,

 

jvm을 통해 기계어로 변환 된다는 것만 알고 있을 뿐(운영체제에 종속되지 않는다.)

 

다른 언어에 대한 것은 그리 관심을 가지지 않고 살아왔었고, 필요할 때만 겉핥기식으로 사용해왔었다.

 

그런데 그런데 이번에 훅 들어온 좋은 질문으로 인해서

 

다시 한번 python의 동작원리에 대해서 생각해볼 수 있었고,

 

조금 더 파고드는 계기가 되었다.


나는 근본적으로 따지면 JAVA라는 고급 언어를 기반으로 개발을 하고 있는 개발자이다.

 

그러므로 다른 언어에 대해 깊게는 알지 못한다.

 

Python이 데이터분석이나 크롤링, 머신러닝, 딥러닝 등에 주로 쓰이고 있고,

 

배울 기회가 생겨 이전에 배웠던 경험이 있을 뿐이다.

 

그렇기 때문에 깊게 알고자 하는 욕구가 없었던 것 같다.

 

또 그럴듯 한 애플리케이션을 만들어본 경험도 없다. 

 

그.러.나

 

모든 언어는 통한다고 했던가?

 

알고보니 python도 컴파일러를 가지고 있었고, 자바와 구조가 완전히 똑같았다.

 

아래 그림은 자바코드가 실행되는 구조이다.

 

자바코드의 실행 과정은 이렇다.

 

1. .java 파일을 java컴파일러가 .class 파일로 변경시켜주고

2..class파일을 jvm이 운영체제에 맞게 끔 기계어로 번역해준다.

 


그럼 이제 python의 코드 실행 원리를 살펴보자...

python도 자바와 매우 흡사하다!

 

아니 이정도면 구조적으로는 똑같다 볼 수 있겠다.

 

1. .py 파일을 작성하고 실행하게 되면, Cpython 컴파일러가 .pyc 파일로 코드를 변환한다.

2. 이 .pyc 파일을 Cpython Virtual Machine에서 실행한다.

 

여기서 CPython이란 C언어로 만들어진 Python 구현체를 의미한다.

 

이 CPython은 C코드도 실행할 수 있고, Python 코드도 실행 할 수 있다.

 

즉 C와 Python의 합집합이다.

 

그렇다면 이어서 추측하기로는 Jpython은 Java일 것이다.

또한 추가적으로 jit 컴파일을 이용하여 Just In Time, 즉 실행시점에 바로 기계어로 번역 하여 실행 해볼 수 도 있다.

 

 

옛날 무협만화를 보면 만류귀종이라는 사자성어가 나온다.

 

프로그래밍언어도 마찬가지 인 것 같다.

 

모두 조금씩 다른 특징을 가지고는 있지만,

 

이를 추상화 해보면 모두 같은 공통점을 가지고 있는 듯하다.

 

오랜만에 블로그에 글도 올리고, python에 대해서 조금 더 알게 되어서 좋았다.

 

오늘의 글은 여기서 끝!