본문 바로가기
728x90

profiling2

[PYTHON] 메모리 측정의 함정 2가지 : sys.getsizeof()와 실제 점유율 차이 해결 방법 파이썬 애플리케이션을 운영하다 보면 sys.getsizeof()로 측정한 객체 크기의 총합보다 실제 프로세스가 점유하고 있는 RSS(Resident Set Size) 메모리가 훨씬 큰 경우를 자주 목격하게 됩니다. 개발자는 "왜 데이터 크기는 100MB인데 프로세스는 500MB를 쓰고 있을까?"라는 의문에 빠지기 쉽습니다. 본 가이드에서는 파이썬의 메모리 관리 아키텍처를 심층 분석하여 측정값과 실제 점유율 사이의 차이가 발생하는 근본 원인을 밝히고, 이를 정확하게 측정하는 방법을 제시합니다.1. sys.getsizeof()의 한계와 측정 방식의 이해sys.getsizeof()는 파이썬 객체 자체의 크기(바이트 단위)를 반환하는 함수입니다. 하지만 이 함수는 '얕은 측정(Shallow measurement.. 2026. 2. 28.
[PYTHON] cProfile 결과를 분석하여 병목 지점을 찾는 워크플로우 파이썬은 개발 생산성이 매우 뛰어난 언어이지만, 실행 속도 측면에서는 종종 '성능의 벽'에 부딪히곤 합니다. 많은 개발자가 감에 의존하여 코드의 특정 부분을 수정하지만, 이는 밑 빠진 독에 물 붓기인 경우가 많습니다. 진정한 성능 최적화는 '측정'에서 시작됩니다. 파이썬 표준 라이브러리인 cProfile은 코드의 어느 지점에서 시간이 소모되는지 정밀하게 추적할 수 있는 강력한 도구입니다. 본 가이드에서는 초보 단계를 넘어 실무에서 즉시 활용 가능한 cProfile 분석 워크플로우를 심층적으로 다룹니다.1. 왜 cProfile인가? 결정적 프로파일링의 이해파이썬에는 다양한 프로파일링 도구가 존재합니다. timeit은 짧은 코드 조각을 측정하기 좋고, line_profiler는 줄 단위의 세밀한 분석을 제공.. 2026. 2. 20.
728x90