[ 백엔드 공부하기 : Python ] 📘 2. Python의 아키텍처 구조 & 데이터/AI 분야 활용 라이브러리

0

[ 백엔드 공부하기 : Python ] 📘 2. Python의 아키텍처 구조 & 데이터/AI 분야 활용 라이브러리

목  차

📗 2-1. Python 내부 구조
📙 파이썬 인터프리터 구조
  📒 CPython의 동작 원리

📒 바이트코드와 가상머신

📒 메모리 관리(GIL)

📙 메모리 모델 및 객체 구조
📒 변수 참조, 객체 ID, 가비지 컬렉션

📒 참조 카운팅과 순환 참조 처리

📙 다양한 구현체
📒 CPython, PyPy, Jython, IronPython

📒 속도와 호환성 비교

📗 2-2. 주요 라이브러리 개요 (데이터/AI 활용 중심)
📙 데이터 처리
📒 NumPy: 배열 연산 및 벡터화

📒 Pandas: DataFrame 기반의 데이터 분석

📒 데이터 처리/시각화 기본 개념

📙 시각화 도구
📒 Matplotlib: 기초 그래프 그리기

📒 Seaborn, Plotly: 고급 시각화

📙 머신러닝/딥러닝
📒 Scikit-learn: 머신러닝 기본 모델

📒 TensorFlow vs PyTorch 비교

📒 기본 학습 흐름

📙 웹 프레임워크 및 백엔드 라이브러리
📒Django, Flask, FastAPI 개념적 차이와 특징

📘 2. Python의 아키텍처 구조 & 데이터/AI 분야 활용 라이브러리

📌 학습 목표.

Python 인터프리터 내부 구조 이해

주요 라이브러리와 프레임워크의 역할 파악

Python이 데이터 과학, AI 분야에서 어떻게 활용되는지 이해

📌 핵심 포인트.

Python 실행 과정: 소스코드 → 바이트코드 → 인터프리터

대표 라이브러리 (NumPy, Pandas, TensorFlow 등)

Python 생태계 내 역할 구분 (웹, 데이터, AI, 자동화 등)

📗 2-1. Python 내부 구조.

📙 파이썬 인터프리터 구조

📒 CPython의 동작 원리.
  • 📜 기초 개념.

    • Python은 인터프리터 언어로, 한 줄씩 코드 실행

    • CPython: Python의 표준 구현체, C로 작성

    • 소스 코드(.py) → 바이트코드(.pyc) → PVM에서 실행

  • 텍스트📜 실사용 예시.

x = 10
y = 20
print(x + y)

-> CPython이 바이트코드로 변환 후 PVM에서 실행.

  • 📜 심화 개념.

    • PVM(Python Virtual Machine) 구조:

        1. 파서(Parser): 소스 코드를 AST(Abstract Syntax Tree)로 변환
        1. 컴파일러(Compiler): AST → 바이트코드 변환
        1. 인터프리터(Interpreter): 바이트코드 실행
    • GIL(Global Interpreter Lock)
      : 동일 프로세스 내 멀티스레드라도 동시에 한 스레드만 Python 바이트코드 실행 가능

  • 📜 실무 적용.

    • CPU-bound 작업 : '멀티스레딩보다는 "멀티프로세싱" 권장.
    • C 확장 모듈 사용 시 성능 개선 가능 ( NumPy 등 )
📒 바이트코드와 가상머신
  • 📜 기초 개념.

    • Python 소스코드는 바로 실행되지 않고 바이트코드(bytecode)로 변환

    • 바이트코드는 PVM에서 실행되며, 플랫폼 독립적

  • 📜 실사용 예시.

python -m py_compile example.py
  • example.pyc 생성 → 바이트코드 확인 가능

  • 📜 심화 개념.

    • .pyc 파일은 캐싱으로 재실행 속도 향상
    • Python 내부 명령어(opcode)로 구성
    • PVM : "스택 기반 구조"로 연산 수행.
  • 📜 실무 적용.

    • 배포 시 '바이트코드'만 배포 가능 ( 소스 보호 )
    • 프로파일링, 디버깅, 코드 최적화 시 바이트 코드 분석 가능.
📒 메모리 관리(GIL)
  • 📜 기초 개념.

    • Python 메모리 관리 : "참조 카운트 + 가비지 컬렉션(GC)"

    • GIL : 한 번에 하나의 스레드만 Python 바이트코드 실행.

    • 객체는 ID, 타입, 값 정보를 가짐.

  • 📜 실사용 예시.

import sys
a = [1,2,3]
print(sys.getrefcount(a))
  • 참조 카운트 확인 가능.

  • 📜 심화 개념.

    • '참조 카운트' : '객체'가 더 이상 참조되지 않으면 '메모리 해제'
    • 순환 참조 : GC(가비지 컬렉터)가 탐지 후 수거.
    • GIL 때문에 CPU-bound 멀티스레딩 성능 제한.
  • 📜 실무 적용.

    • 멀티스레딩 : I/O-bound 작업에 적합.
    • CPU-bound 작업 : multiprocessing 사용.
    • 메모리 최적화 위해 불필요한 객체 제거.

📗 2-2. 주요 라이브러리 개요 (데이터/AI 활용 중심)

0개의 댓글