Repolode
bloomberg

bloomberg/memray

Python 코드, 네이티브 확장 모듈, 인터프리터의 메모리 할당을 추적하고 여러 유형의 리포트를 생성하는 메모리 프로파일러입니다.

스타
15,389
포크
480
열린 이슈
37
마지막 커밋
그저께

어떤 프로젝트인가요?

Memray는 Python용 메모리 프로파일러입니다. Python 코드, 네이티브 C/C++ 확장 모듈, Python 인터프리터 자체에서 발생하는 메모리 할당을 기록하고, 수집한 데이터를 플레임 그래프, 표, 트리, 터미널 요약 등의 리포트로 만듭니다. 주로 `memray run` 명령줄 도구로 실행하며, Tracker 컨텍스트 매니저를 통해 라이브러리로 사용할 수도 있습니다.

샘플링 프로파일러와 달리 Memray는 모든 함수 호출을 추적하므로 호출 스택을 정확하게 기록합니다. 네이티브 추적은 `--native` 옵션으로 활성화하며, 결과에 C/C++ 프레임을 추가해 numpy나 pandas 같은 확장 모듈이 관련된 경우 유용합니다. 라이브 모드에서는 프로그램 실행 중 할당 내역을 터미널 인터페이스로 확인할 수 있고, attach 기능으로 이미 실행 중인 프로세스의 추적을 시작할 수도 있습니다.

Memray는 메모리 사용량이 많은 코드의 원인 파악, 메모리 누수 탐지, 메모리 할당이 집중되는 핫스팟 식별 등 흔히 발생하는 메모리 문제를 해결하는 데 활용할 수 있습니다. Python 스레드와 네이티브 스레드를 지원합니다. Linux와 macOS에서만 실행되며 Python 3.9 이상이 필요합니다. pytest 플러그인인 pytest-memray는 별도 프로젝트로 제공됩니다.

핵심 기능

  • 01샘플링 프로파일러와 달리 모든 함수 호출을 추적해 호출 스택을 정확하게 기록
  • 02`--native` 옵션으로 Python 코드와 네이티브 C/C++ 확장 모듈의 메모리 할당 추적
  • 03플레임 그래프, HTML 표, 터미널 트리 및 요약 생성
  • 04프로그램 실행 중 할당 내역을 살펴볼 수 있는 라이브 터미널 인터페이스
  • 05이미 실행 중인 Python 프로세스에 연결 가능
  • 06Tracker 컨텍스트 매니저를 통해 Python 라이브러리로 사용 가능

활용 사례

  • Python 서비스나 스크립트의 메모리 사용량이 높은 원인 파악
  • 장시간 실행되는 애플리케이션의 메모리 누수 탐지
  • 대량의 메모리를 할당하는 코드 핫스팟 식별
  • numpy나 pandas 같은 C 확장 모듈에 의존하는 Python 프로그램 프로파일링

빠른 시작

  1. 1

    pip으로 PyPI에서 Memray를 설치합니다

    python3 -m pip install memray
  2. 2

    프로파일러로 스크립트를 실행해 메모리 할당을 기록합니다

    python3 -m memray run my_script.py
  3. 3

    결과 파일에서 HTML 플레임 그래프를 생성합니다

    memray flamegraph memray-my_script.py.2369.bin

사용 전 알아둘 점

  • Linux와 macOS에서만 작동하며 Windows에는 설치할 수 없습니다.
  • 소스에서 빌드하려면 libunwind, lz4, libdebuginfod와 같은 시스템 라이브러리가 필요합니다.

토픽

자주 묻는 질문

memray은(는) 무엇인가요?
Python 코드, 네이티브 확장 모듈, 인터프리터의 메모리 할당을 추적하고 여러 유형의 리포트를 생성하는 메모리 프로파일러입니다. Memray는 Python용 메모리 프로파일러입니다. Python 코드, 네이티브 C/C++ 확장 모듈, Python 인터프리터 자체에서 발생하는 메모리 할당을 기록하고, 수집한 데이터를 플레임 그래프, 표, 트리, 터미널 요약 등의 리포트로 만듭니다. 주로 `memray run` 명령줄 도구로 실행하며, Tracker 컨텍스트 매니저를 통해 라이브러리로 사용할 수도 있습니다.
memray은(는) 무료로 사용할 수 있나요? 라이선스는 무엇인가요?
memray은(는) Apache-2.0 라이선스의 오픈소스입니다. 상업용 제품에 사용하기 전에 라이선스 조건을 확인하세요.
memray은(는) 아직 유지보수되고 있나요?
활발히 유지보수 중. memray의 마지막 커밋은 2026년 10월 19일입니다.
memray은(는) 어디에 사용할 수 있나요?
Python 서비스나 스크립트의 메모리 사용량이 높은 원인 파악 장시간 실행되는 애플리케이션의 메모리 누수 탐지 대량의 메모리를 할당하는 코드 핫스팟 식별 numpy나 pandas 같은 C 확장 모듈에 의존하는 Python 프로그램 프로파일링
memray는 어떻게 설치하나요?
pip으로 PyPI에서 Memray를 설치합니다: python3 -m pip install memray 프로파일러로 스크립트를 실행해 메모리 할당을 기록합니다: python3 -m memray run my_script.py 결과 파일에서 HTML 플레임 그래프를 생성합니다: memray flamegraph memray-my_script.py.2369.bin
memray은(는) 어디서 받을 수 있나요?
소스 코드와 설치 방법은 GitHub에 있습니다: https://github.com/bloomberg/memray

요약은 프로젝트 README를 바탕으로 AI가 작성했습니다. GitHub 통계는 매일 갱신됩니다.

관련 프로젝트