| 버전 | 주요 변화 |
|---|---|
| 3.11 | Faster CPython 1단계. 적응형 특수화 인터프리터, 저비용 예외 처리, 프레임 객체 경량화. 이전 버전 대비 대체로 뚜렷한 개선 |
| 3.12 | 인라인 컴프리헨션, 특수화 확대. 3.11 대비 개선 폭은 작다 |
| 3.13 | 실험적 JIT(copy-and-patch)과 free-threading(GIL 제거) 빌드가 들어왔다. 둘 다 기본 빌드에서는 꺼져 있다 |
| 3.14 | free-threading 이 실험 단계를 벗어나 공식 지원 상태가 됐다. JIT 은 여전히 선택 빌드 |
2026-09-20 기준 현행 안정 릴리스는 3.14.7 이다.[1]
숫자를 인용할 때는 주의한다. 공식 벤치마크(pyperformance)의 개선 폭은 워크로드 묶음의 기하평균이고, 개별 프로그램의 체감은 크게 다르다. CPU 바운드 순수 파이썬 코드는 이득이 크지만, 대기 시간이 대부분인 I/O 중심 서비스나 시간을 NumPy · pandas 같은 C 확장 안에서 보내는 코드는 거의 변하지 않는다.
버전을 올리는 이유가 성능뿐이라면 먼저 어디에 시간을 쓰는지 재 본다.
python3 -m cProfile -s cumtime app.py | head -30
python3 -X importtime -c 'import app' 2>&1 | tail -20
-X importtime 은 기동이 느린 원인을 찾을 때 유용하다. 무거운 모듈을 최상단에서 import 하는 것이 대부분의 원인이다.
의존 패키지가 새 버전을 지원하는지 확인한다. C 확장이 있는 패키지는 버전마다 휠을 따로 빌드하므로, 나온 지 얼마 안 된 파이썬에서는 휠이 없어 소스 빌드로 넘어간다.
python3.14 -m pip install --dry-run -r requirements.txt
GIL 을 제거한 빌드는 별도 인터프리터로 제공된다. 실행 파일 이름에 t 가 붙는다.
python3.14t -c 'import sys; print(sys._is_gil_enabled())'
멀티스레드로 CPU 를 쓰는 작업에서 확장성이 생기지만, 단일 스레드 성능은 기본 빌드보다 떨어지고 C 확장이 이 빌드를 지원해야 한다. 지원하지 않는 확장을 import 하면 GIL 이 다시 켜지거나 경고가 난다. 운영 도입은 의존성이 모두 대응됐는지 확인한 뒤에 한다.
3.13 부터 들어간 JIT 은 기본으로 꺼져 있고, 켜려면 그렇게 빌드된 인터프리터가 필요하다.
python3.14 -c 'import sys; print(sys._jit.is_enabled())' 2>/dev/null || echo "JIT 미지원 빌드"
아직 전반적인 이득이 크지 않으므로 운영에서 기대할 단계는 아니다.
버전 올리기보다 먼저 손댈 것이 있다.
반복문 안의 불필요한 속성 조회와 함수 호출을 줄인다. 이것만으로 배 단위 차이가 나는 경우가 많다.
수치 연산은 NumPy 로, 데이터 처리는 pandas 또는 Polars 로 옮긴다. 인터프리터 개선보다 훨씬 크다.
I/O 대기가 병목이면 asyncio 나 스레드로 겹친다. 인터프리터 속도와 무관하다.
CPU 를 여러 개 쓰려면 multiprocessing 또는 워커 프로세스를 늘린다. GIL 이 있는 빌드에서 스레드로는 CPU 바운드 작업이 병렬화되지 않는다.
최신 버전 3.14.7 — 2026-09-20 확인. https://www.python.org/downloads/ ↩︎