GIL 없는 파이썬, 즉 free-threaded Python은 여러 스레드가 파이썬 코드를 실제로 병렬 실행할 수 있게 만든 선택형 CPython입니다.
2026년 7월 기준 기본 파이썬에서 GIL이 완전히 사라진 것은 아닙니다. 다만 공식 지원되는 별도 빌드가 등장했다는 점이 중요합니다.
이 글에서는 GIL이 무엇인지, 멀티코어 활용이 어떻게 달라지는지, 성능과 호환성 측면에서 어떤 대가가 따르는지 살펴봅니다.
GIL(Global Interpreter Lock)은 일반 CPython에서 한 번에 한 스레드만 파이썬 객체와 인터프리터 내부 상태를 다루도록 제한하는 전역 잠금장치입니다.
CPU에 여러 코어가 있어도 한 프로세스 안의 스레드는 파이썬 코드를 동시에 실행하지 못하고 빠르게 차례를 바꿔 가며 실행합니다.
주방에 요리사가 여러 명 있지만 조리대로 들어가는 문의 열쇠는 하나뿐인 상황과 비슷합니다.
이 때문에 계산 중심의 파이썬 프로그램은 스레드를 늘려도 멀티코어 CPU를 온전히 활용하기 어려웠습니다.
다만 파일·네트워크 작업이나 일부 C·C++ 확장 연산에서는 GIL이 해제될 수 있으므로, 모든 작업이 항상 직렬로 실행된다는 뜻은 아닙니다.
GIL은 여러 스레드 가운데 한 번에 하나만 파이썬 코드를 실행하게 해, 계산 중심 작업의 멀티코어 병렬화를 제한해 온 잠금장치입니다.
free-threaded CPython에서는 서로 다른 스레드가 여러 CPU 코어에서 파이썬 코드를 실제로 병렬 실행할 수 있습니다.
기존 주방의 문을 여러 개로 늘리는 대신, 냉장고나 조리대처럼 함께 쓰는 도구마다 더 작은 잠금장치를 두는 구조입니다.
작업마다 별도 프로세스를 만드는 방식보다 메모리를 공유하기 쉽고, 데이터 복사와 프로세스 간 통신 부담도 줄어들 수 있습니다.
그러나 프로그램을 새 빌드로 실행한다고 해서 자동으로 빨라지지는 않습니다.
작업을 독립적으로 나눌 수 있어야 하며, 여러 스레드가 같은 데이터를 수정한다면 여전히 threading.Lock 같은 동기화가 필요합니다.

| 구분 | 일반 CPython | free-threaded CPython |
|---|---|---|
| 파이썬 코드 실행 | 한 번에 한 스레드 | 여러 스레드의 병렬 실행 가능 |
| 공유 데이터 보호 | GIL과 별도 잠금 | 별도 잠금과 안전한 설계 |
Python 문서에 따르면 Python 3.13.0은 2024년 10월 7일 free-threaded 빌드를 실험적으로 도입했습니다.
Python 3.14.0에서는 PEP 779에 따라 ‘공식 지원되지만 여전히 선택 사항’인 Phase II로 올라섰습니다.
따라서 “파이썬에서 GIL이 사라졌다”보다는 “GIL을 끈 별도 CPython 빌드가 공식 지원 옵션이 됐다”가 정확한 표현입니다.
기본 또는 유일한 CPython으로 전환하는 Phase III 여부는 조사 시점까지 결정되지 않았습니다.
조사일인 2026년 7월 22일 기준 최신 안정 버전은 Python.org가 2026년 6월 10일 공개한 3.14.6이며, 발행 전에 공식 자료를 다시 확인해야 합니다.

먼저 살펴볼 것은 단일 스레드 성능 오버헤드입니다.
Python 3.14.6 공식 문서의 pyperformance 평균을 기준으로 보면, 같은 3.14 계열의 일반 빌드와 비교한 오버헤드는 macOS aarch64에서 약 1%, x86-64 Linux에서 약 8%입니다.
하드웨어와 작업에 따라 달라지는 평균값이므로 모든 프로그램에 그대로 적용되지는 않습니다.
공식 문서는 free-threaded 빌드가 일반적으로 메모리를 더 사용한다고도 설명합니다.
지원 사실을 표시하지 않은 C 확장 모듈을 불러오면 경고가 나타나고, 런타임에서 GIL이 다시 활성화될 수도 있습니다.
확장 모듈은 free-threaded용으로 별도 컴파일해야 하므로, 사용하는 패키지와 wheel의 호환성을 먼저 확인해야 합니다.

free-threading은 GPU 계산 자체를 갑자기 빠르게 만드는 기술이 아닙니다.
NumPy나 GPU 커널의 무거운 연산은 이미 GIL 밖에서 실행되는 경우가 많습니다. 주로 달라지는 부분은 이런 연산을 연결하고 조정하는 파이썬 제어 계층입니다.
여러 AI 추론 요청, 강화학습 시뮬레이션, 데이터 전처리와 후처리처럼 독립적으로 나눌 수 있는 작업에서는 설계 선택지가 늘어납니다.
멀티프로세싱에 필요했던 직렬화와 프로세스 간 통신, 메모리 복제 부담도 줄일 수 있습니다.
개인적으로는 즉각적인 속도 혁명보다 파이썬 병렬 프로그램의 구조를 더 단순하게 만들 수 있다는 점이 더 중요한 변화라고 봅니다.

free-threaded Python의 의미는 자동 가속이 아니라, 한 프로세스 안에서 파이썬 작업을 멀티코어로 병렬화할 수 있는 공식 선택지가 생겼다는 데 있습니다.
아닙니다.
free-threaded Python은 공식 지원되는 선택형 별도 빌드이며, 기본 CPython은 여전히 GIL을 사용합니다.
아닙니다.
CPU 중심이면서 병렬 분할이 가능한 작업이어야 하며, 잠금 경합과 메모리, 확장 모듈 상태에 따라 결과가 달라집니다.
공유 데이터를 수정한다면 여전히 필요합니다.
인터프리터 내부 보호와 애플리케이션의 데이터 경쟁 방지는 서로 다른 문제입니다.
PEP 703·PEP 779, Python 3.13·3.14 변경 사항, Python 3.14.6 릴리스 및 free-threading HOWTO, CPython 스레드·C 확장 문서, NumPy Thread Safety 문서를 참고했습니다. 최신 안정 버전과 Phase III 여부, 패키지별 호환성은 발행 전에 공식 자료를 다시 확인해야 합니다.

| 비밀번호 없는 로그인, 패스키로 바꾸면 정말 안전할까 (0) | 2026.07.25 |
|---|---|
| 깃 커밋·브랜치 개념 — 세이브 포인트와 평행 세계 (0) | 2026.07.25 |
| 환경변수와 PATH가 뭐야 — API 키 보관과 'command not found'의 정체 (0) | 2026.07.24 |
| 터미널 기본 명령어 — 검은 창이 무섭지 않아지는 8개 (0) | 2026.07.24 |
| 패키지 매니저가 뭐야 — npm·pip이 하는 일 (0) | 2026.07.24 |
댓글 영역