DevTales
close
프로필 배경
프로필 로고

DevTales

  • 분류 전체보기 (88)
    • Lang (55)
      • Java (21)
      • Kotlin (3)
      • C (12)
      • Go (9)
      • Python (10)
    • Spring (14)
      • Data (2)
      • Kafka (2)
      • Security (0)
      • Webflux (10)
    • Infra (9)
      • Database (3)
      • Middleware (0)
      • Container (1)
      • OS (5)
    • Build (0)
    • CS (3)
      • Network (1)
      • Security (1)
      • Architecture (1)
    • Leaner's High (5)
    • 기타 (2)
  • 홈
  • 방명록
[Python] (6) Object Internals

[Python] (6) Object Internals

Object Internals 앞선 글에서는 Python의 모든 값이 객체로 표현된다는 Object Model과 이러한 객체를 위한 메모리를 CPython이 어떻게 할당하고 회수하는지 살펴보았습니다. 이번에는 두 내용을 연결해 실제 Python 객체가 CPython 내부의 메모리에서 어떤 모습으로 존재하는지 살펴보겠습니다. a = 10b = [1, 2, 3]c = {"name": "Python"}Python 언어 수준에서는 10, [1, 2, 3], {"name": "Python"} 모두 객체입니다. 하지만 실제 CPython 내부에서는 각각 다른 C 구조를 사용합니다. 이들 객체는 서로 다른 데이터를 저장하지만 CPython이 모든 객체를 동일한 방식으로 다룰 수 있도록 공통적인 구조 역시 가지고 있습..

  • format_list_bulleted Lang/Python
  • · 2026. 9. 26.
  • textsms
[Python] (5) Memory Management

[Python] (5) Memory Management

Memory Management 앞선 글에서는 Python 코드가 Code Object와 Bytecode로 변환되고, Execution Frame과 Bytecode Interpreter를 통해 실행되는 과정을 살펴보았습니다. 그 과정에서 Python은 계속해서 새로운 객체를 생성하고 사용합니다.a = 10users = []name = "Python"위 코드의 10, [], "Python"은 모두 Python 객체입니다. 그렇다면 이러한 객체를 저장할 메모리는 어디에서 가져오고 더 이상 사용하지 않는 객체의 메모리는 언제 회수될까요? Python의 Memory Management는 크게 두 가지 관점으로 나누어볼 수 있습니다. CPython에서는 Python Memory Manager와 전용 Memory ..

  • format_list_bulleted Lang/Python
  • · 2026. 9. 26.
  • textsms
[Python] (4) Data Model

[Python] (4) Data Model

Data Model 앞선 글에서는 Python에서 모든 데이터가 Object로 표현되고, Name이 Object에 Binding되는 구조와 Python 코드가 Bytecode와 Execution Frame을 통해 실행되는 과정을 살펴보았습니다. 이번에는 조금 다른 관점에서 Python 객체를 살펴보겠습니다.a.foo()value = d["name"]length = len(a)result = a + b위 코드는 모두 익숙한 Python 문법이지만 객체가 어떤 규칙에 따라 이러한 문법에 참여하는지는 단순하지 않습니다. Python은 이러한 객체의 동작을 Data Model이라는 일관된 규칙으로 정의합니다. 이번 글에서는 Attribute Lookup, Function과 Method, Descriptor, M..

  • format_list_bulleted Lang/Python
  • · 2026. 9. 26.
  • textsms
[Python] (3) Execution Model

[Python] (3) Execution Model

Execution Model 앞서 Object Model에서는 Python의 변수와 객체를 다음과 같은 관계로 살펴보았습니다. 그렇다면 Python은 이 코드를 어떻게 실행할까요? Python은 소스 코드를 CPU가 직접 실행하도록 전달하지 않습니다. CPython에서는 Python 소스를 컴파일하여 Bytecode를 만들고 이를 실행하기 위한 Frame을 구성한 뒤 Bytecode Interpreter가 명령을 하나씩 처리합니다. 전체적인 흐름은 다음과 같습니다. 이번 글에서는 Python의 Execution Model을 중심으로 Compiler, Code Object, Bytecode, Frame, Call Stack 그리고 CPython Runtime의 관계를 살펴보겠습니다. Compiler P..

  • format_list_bulleted Lang/Python
  • · 2026. 9. 22.
  • textsms
[Python] (2) Object Model

[Python] (2) Object Model

Object Model Python의 변수를 처음 배울 때 다음과 같은 코드를 흔히 "a라는 변수에 10이라는 값을 저장한다"고 설명합니다.a = 10 입문 단계에서는 충분히 직관적인 설명이지만, Python의 동작 방식을 조금 더 깊게 이해하려면 다른 관점이 필요합니다. Java에서는 다음과 같이 primitive 값을 지역 변수에 직접 저장할 수 있습니다.int a = 10; 반면 Python에는 Java의 int, boolean, double과 같은 의미의 primitive type이 존재하지 않습니다. 10 역시 하나의 객체이며 a는 해당 객체와 연결된 이름입니다. 따라서 Python의 변수와 메모리 동작을 이해하기 위해서는 먼저 Object, Name, Binding, Namespace, Sco..

  • format_list_bulleted Lang/Python
  • · 2026. 9. 21.
  • textsms
[Python] (1) GIL

[Python] (1) GIL

GIL Python의 멀티스레딩을 공부하다 보면 높은 확률로 GIL(Global Interpreter Lock)이라는 용어를 만나게 됩니다. 보통은 다음과 같이 설명합니다.CPython에서는 GIL 때문에 여러 스레드가 동시에 Python 코드를 실행할 수 없다. 설명 자체는 틀리지 않습니다. Python 공식 Glossary에서도 GIL을 한 번에 하나의 스레드만 Python bytecode를 실행하도록 보장하는 메커니즘이라고 설명합니다. 하지만 여기에서 자연스럽게 의문이 생겼습니다. Java에서는 하나의 프로세스 안에서 여러 스레드가 여러 CPU Core를 사용하여 코드를 병렬로 실행합니다. 공유 데이터에 대한 동기화 문제는 synchronized, Lock, Atomic 계열 등을 이용해 개발자가..

  • format_list_bulleted Lang/Python
  • · 2026. 9. 21.
  • textsms
  • navigate_before
  • 1
  • navigate_next
전체 카테고리
  • 분류 전체보기 (88)
    • Lang (55)
      • Java (21)
      • Kotlin (3)
      • C (12)
      • Go (9)
      • Python (10)
    • Spring (14)
      • Data (2)
      • Kafka (2)
      • Security (0)
      • Webflux (10)
    • Infra (9)
      • Database (3)
      • Middleware (0)
      • Container (1)
      • OS (5)
    • Build (0)
    • CS (3)
      • Network (1)
      • Security (1)
      • Architecture (1)
    • Leaner's High (5)
    • 기타 (2)
최근 글
인기 글
최근 댓글
태그
  • #비동기
  • #혼자 공부하는 C언어
  • #java
  • #Netty
  • #Kotlin In Action
  • #WebFlux
  • #tucker의 go언어 프로그래밍
  • #Python
  • #Java의 정석
  • #점프 투 파이썬
전체 방문자
오늘
어제
전체
Copyright © Daum Corp. All rights reserved.
Designed by 티스토리

티스토리툴바