Python 3.15에 도입된 샘플링 프로파일러 Tachyon으로 멀티스레딩 병목을 시각화하고 OOP 추상화의 성능 함정을 잡아낸 사례소개
Tachyon이란?
Python 3.15에 표준 라이브러리로 추가되는 샘플링 기반 프로파일러.
기존 프로파일러들이 외면했던 프리스레딩(GIL-free) 환경을 네이티브로 지원하는 것이 핵심.
주요 특징
- 샘플링 방식으로 낮은 오버헤드
- 모든 스레드 동시 프로파일링 지원 (-a 옵션)
- 실행 중인 프로세스에 원격 연결(attach) 가능
- 플레임그래프 등 다양한 출력 포맷 지원
- async 인식 — asyncio 프로그램에도 적용 가능
실행 방법
sudo -E uv run -p 3.15.0a6t python -m profiling.sampling run \ -a --flamegraph -o profile.html -r 20khz your_script.py # -a : 메인 스레드 외 모든 스레드 프로파일링 # -r 20khz : 초당 20,000회 샘플링 (정밀도 조절 가능) # 결과물 : 플레임그래프 HTML — 빨간 컬럼이 핫패스실제 적용 사례 — 프리스레딩 병목 탐지
최적화 전 — __getitem__을 통한 Grid 접근이 전체 실행시간의 75% 차지
https://blog.changs.co.uk/images/unoptimised-bench.png
최적화 후 — 내부 tuple 직접 접근으로 변경 후 5.32%로 감소
https://blog.changs.co.uk/images/optimised-bench.png
왜 중요한가
- 지금까지 프리스레딩 성능 문제는 "감으로 찾는" 수밖에 없었음
- Tachyon은 어디서 스레드가 막히는지 시각적으로 보여주는 첫 번째 공식 도구
- 일반 Python 개발자도 프리스레딩 성능을 직접 측정하고 개선할 수 있는 길이 열림

1 week ago
10









English (US) ·