본문 바로가기
카테고리 없음

파이썬 인터프리터, 컴파일러 (기초 상식)

by python pro 2023. 2. 4.
반응형

Python은 인터프리터 언어입니다. 인터프리터란 컴퓨터가 이해할 수 있는 언어로 번역하는 프로그램입니다. 인터프리터는 소스 코드를 읽어들이면서 한 줄씩 실행하면서 결과를 바로 보여줍니다. 그러나 컴파일러란 소스 코드를 컴퓨터가 이해할 수 있는 언어로 번역하여 실행 파일로 만들어내는 프로그램입니다. 컴파일러는 소스 코드를 읽어들이면서 컴퓨터가 이해할 수 있는 언어로 번역하여 파일로 생성합니다. 컴파일러는 소스 코드를 실행하기 전에 미리 번역하여 실행 파일로 생성하기 때문에 실행 속도가 빠르지만, 소스 코드를 수정하면 다시 컴파일을 해야합니다.

 

예를들어 아래와 같은 소스 코드를 실행하는 경우입니다.

# 인터프리터
print("Hello World")

# 컴파일러
$ gcc -o hello hello.c
$ ./hello

첫번째 예제는 인터프리터를 사용하여 파이썬을 실행하면서 "Hello World"를 출력하는 코드이고, 두번째 예제는 컴파일러를 사용하여 C 언어로 작성된 hello.c 파일을 컴파일하여 실행파일인 hello를 생성하고 실행하는 코드입니다.

 

Python은 인터프리터 언어로 소스 코드를 실행할 때마다 인터프리터가 해석하는 것이 아닌 파이썬 컴파일러를 사용하여 실행 파일로 생성할 수 있는 기능을 제공합니다. 예를 들어, Cython, Nuitka를 사용하면 파이썬 코드를 컴파일 할 수 있습니다. 이러한 파이썬 컴파일러를 사용하면 소스 코드를 컴파일하여 실행 파일로 생성하면서 실행 속도를 향상시킬 수 있습니다. 하지만 인터프리터의 경우에는 코드를 작성하는 시점에서 실행 결과를 바로 확인 할 수 있다는 장점이 있습니다.

 

코드 예시로는 아래와 같이 Cython을 사용하여 파이썬 코드를 컴파일 하는 것을 볼 수 있습니다.

# test.py 
def add(a, b):
    return a + b

# Cython 컴파일
$ cython test.py -o test.c
$ gcc -shared -pthread -fPIC -fwrapv -O2 -Wall -fno-strict-aliasing -I/usr/include/python3.8 -o test.so test.c

# 컴파일된 파일 실행
import test
print(test.add(1, 2)) # 3

위 예제에서는 test.py 파일을 Cython을 사용하여 test.c 파일로 컴파일하고 test.so 파일로 실행하는 것을 볼 수 있습니다.

따라서, Python은 인터프리터 언어지만 컴파일러를 사용하여 실행 파일로 생성하면서 속도를 향상시킬 수 있다는 장점을 가지고 있습니다.

 

실제 업무에서는 파이썬을 컴파일하여 사용하는 경우는 상대적으로 적지만 있습니다. 컴파일된 파이썬 코드는 실행 속도가 빠르고, 소스 코드를 보안상 노출하지 않아도 되는 장점이 있습니다. 예를들어, 인터넷에서 제공하는 서비스나 앱에서는 코드를 노출하지 않기 위해서 컴파일된 파이썬 코드를 사용할 수 있습니다. 특정 알고리즘이나 작업이 반복적으로 수행되는 경우 실행 속도를 향상시키기 위해서도 컴파일된 파이썬 코드를 사용할 수 있습니다. 하지만 일반적으로는 파이썬을 컴파일하여 사용하는 경우는 많지 않고, 파이썬의 강력한 도구들과 인터프리터의 편의성 때문에 대부분 인터프리터로 실행하는 경우가 많습니다. 파이썬은 다양한 라이브러리와 프레임워크를 제공하며, 개발자들은 이러한 도구들을 이용하여 편리하게 개발할 수 있습니다.

반응형

댓글