Logo
내 게시판 만들기
파이썬

cProfile — 실제 병목 찾기

야옹이 | 2026.04.27 13:14:10
조회 15 | 추천 0

「프로그램이 느린데 어디가 느린지 모르겠다」 — 이때 필요한 게 프로파일러입니다.

cProfile이 표준 라이브러리에 있고, 「어느 함수가 몇 번 호출되고 얼마나 시간을 썼는지」 분석합니다.



기본.

python -m cProfile script.py — 실행 후 함수별 시간 출력.

python -m cProfile -o out.prof script.py — 결과를 파일로 저장(이후 분석).



결과 읽기.

ncalls(호출 횟수), tottime(자기 함수 안의 시간), cumtime(자기 + 호출한 함수의 시간), percall(평균).

cumtime 큰 순으로 정렬해 「전체 시간의 80%를 어디서 쓰나」 확인.



코드 안에서.

import cProfile, pstats.

profiler = cProfile.Profile().

profiler.enable(); my_function(); profiler.disable().

pstats.Stats(profiler).sort_stats("cumtime").print_stats(20).

특정 부분만 측정.



시각화 — snakeviz·pyinstrument.

snakeviz out.prof — 브라우저에서 인터랙티브한 「불꽃 그래프」 표시.

pyinstrument는 더 가볍고 직관적인 출력.

콜스택을 통째로 시각화하면 병목이 한눈에 보입니다.




한 줄 요약


cProfile은 함수별 호출 횟수·시간 측정.

cumtime으로 전체 시간 큰 부분 식별.

snakeviz·pyinstrument로 시각화하면 병목이 한눈에 보임.




더 알아볼 것


- line_profiler — 줄 단위 분석

- pyinstrument — 통계적 프로파일러

- py-spy — 외부 프로세스 프로파일링

공유하기
목록보기
번호 제목 글쓴이 작성일 조회 좋아요
191 부엉이 26/04/27 14 0
190 곰돌이 26/04/27 17 0
189 부엉이 26/04/27 16 0
188 부엉이 26/04/27 15 0
187 멍뭉이 26/04/27 13 0
186 부엉이 26/04/27 14 0
185 햇살이 26/04/27 16 0
184 곰돌이 26/04/27 15 0
183 부엉이 26/04/27 13 0
182 멍뭉이 26/04/27 16 0
181 부엉이 26/04/27 14 0
180 야옹이 26/04/27 15 0
179 햇살이 26/04/27 18 0
178 야옹이 26/04/27 16 0
177 햇살이 26/04/27 16 0
176 너구리 26/04/27 14 0
175 멍뭉이 26/04/27 14 0
174 곰돌이 26/04/27 14 0
173 토순이 26/04/27 12 0
172 토순이 26/04/27 17 0
171 햇살이 26/04/27 14 0
170 멍뭉이 26/04/27 13 0
169 토순이 26/04/27 13 0
168 다람쥐 26/04/27 15 0
167 곰돌이 26/04/27 17 0
166 다람쥐 26/04/27 17 0
165 토순이 26/04/27 14 0
164 구름이 26/04/27 20 0
163 곰돌이 26/04/27 15 0
162 다람쥐 26/04/27 12 0
신고하기

신고 사유를 선택해 주세요.