Series / Python
GitHub

Python 시리즈

GIL, 참조 카운팅, GC, 스레드 동기화. 4편을 읽는 순서대로 정리했습니다.

Python2025.02.06.

참조 카운팅은 어떻게 메모리를 해제하고 어디서 실패하는가

참조 카운팅은 객체를 가리키는 참조 수를 세다가 0이 되는 순간 메모리를 해제하는 CPython의 기본 메모리 관리 방식입니다. 카운트가 언제 오르내리는지, 순환 참조에서 카운트가 1에 멈추는 이유와 약한 참조로 순환을 끊는 법을 코드로 확인합니다.

Python
참조 카운팅은 어떻게 메모리를 해제하고 어디서 실패하는가
Python2025.02.21.

세대별 가비지 컬렉터가 순환 참조를 찾아내는 다섯 단계

파이썬 GC는 참조 카운팅이 회수하지 못하는 순환 참조를 치우는 수집기입니다. CPython이 어떤 객체를 추적하는지, 세대와 임계값이 언제 수집을 일으키는지, gc_refs를 깎아 순환에 갇힌 객체만 골라내는 다섯 단계를 정리합니다.

Python
세대별 가비지 컬렉터가 순환 참조를 찾아내는 다섯 단계
Python2025.02.17.

GIL은 무엇을 지키고 무엇을 지키지 않는가

GIL(Global Interpreter Lock)은 CPython에서 여러 스레드가 동시에 바이트코드를 실행하지 못하게 막는 뮤텍스입니다. 이 락이 보호하는 인터프리터 내부 상태와 보호하지 않는 우리 코드의 경계, 스레드가 실제로 전환되는 지점, free-threaded 빌드의 현재를 확인합니다.

Python
GIL은 무엇을 지키고 무엇을 지키지 않는가
Python2025.02.27.

Lock부터 Barrier까지, GIL이 있어도 동기화가 필요한 이유

GIL은 바이트코드 명령 하나까지만 원자성을 보장하므로, 값을 읽고 더해 다시 쓰는 한 줄도 스레드 사이에서 깨질 수 있습니다. Lock, RLock, Semaphore, Event, Condition, Barrier가 각각 무엇을 보장하고 어디서 어긋나는지 정리합니다.

Python
Lock부터 Barrier까지, GIL이 있어도 동기화가 필요한 이유
Thank You for Visiting My Blog, Have a Good Day 😆