프로젝트 소개
Memray는 Python 코드는 물론 C/C++ 같은 네이티브 확장 모듈, 그리고 Python 인터프리터 자체의 메모리 할당까지 추적하도록 설계된 Python용 메모리 프로파일러입니다. 샘플링 프로파일러와 달리 모든 함수 호출에 대한 상세한 콜 스택 추적을 제공하여 메모리 사용량을 정확하게 귀속시킵니다. CLI와 라이브러리 두 가지 방식으로 활용할 수 있어 다양한 profiling 시나리오에 유연하게 대응합니다.
주요 기능은 다음과 같습니다:
- 전체 콜 스택 표현과 함께 모든 함수 호출을 추적합니다.
- --native 플래그를 통해 numpy, pandas 등 Python 확장 모듈 내의 네이티브 C/C++ 코드를 프로파일링할 수 있습니다.
- 플레임 그래프(HTML), 표, 트리 뷰, 실시간 터미널 모니터링, 요약 및 통계 등 여러 유형의 보고서를 생성합니다.
- Python 스레드와 C++ 확장 모듈의 네이티브 스레드를 지원합니다.
- 빠른 성능: 프로파일링 중 최소한의 지연만 발생하며, 속도 대 정밀도 균형을 위해 네이티브 추적을 켜고 끌 수 있습니다.
- pytest-memray 플러그인을 통한 pytest 통합으로 자동화된 메모리 테스트와 제한 기능을 제공합니다.
- 라이브 모드: 장시간 실행되는 스크립트 중 실시간 메모리inspect를 위한 대화형 TUI를 제공합니다.
- 프로그래머스 API: memray.Tracker() 컨텍스트 관리자를 사용해 특정 코드 블록을 프로그래밍 방식으로 프로파일링할 수 있습니다.
설치에는 Python 3.9+가 필요하며 pip 또는 conda를 통해 설치할 수 있습니다. Linux x86/x64 및 macOS용 바이너리 휠이 제공됩니다. 소스 빌드 시 libunwind, liblz4 같은 시스템 종속성이 필요합니다. 문서와 예시는 https://bloomberg.github.io/memray/에서 확인할 수 있습니다.
Memray는 높은 메모리 사용량, 메모리 누수, 할당 핫스팟을 식별하는 데 도움이 됩니다. Windows 및 기타 플랫폼은 지원하지 않습니다. Apache-2.0 라이선스로 배포되며 DCO 서명 후 커뮤니티 기여를 환영합니다.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.