Python 용 시각적 프로파일 러가 있습니까? [닫은]


99

나는 지금 cProfile을 사용 하지만 통계 데이터를 쿼리하기 위해 pstats 코드를 작성하는 것이 지루하다는 것을 알았습니다.

CPU 시간과 메모리 할당 측면에서 Python 코드가 수행하는 작업을 보여주는 시각적 도구를 찾고 있습니다.

Java 세계의 몇 가지 예는 visualvmJProfiler 입니다.

  • 이와 같은 것이 존재합니까?
  • 이를 수행하는 IDE가 있습니까?
  • 겠습니까 DTrace에 도움을?

Linux 용 KCachegrind 에 대해 알고 있지만 KDE를 설치하지 않고도 Windows / Mac에서 실행할 수있는 것을 선호합니다.


5
이와 같은 프로그램이 아직 존재하지 않는다면 훌륭한 오픈 소스 프로젝트가 될 것입니다.
carl

@cvondrick 이와 같은 프로그램이 존재하며 이미 언급되었습니다 : KCachegrind.
Devin Jeanpierre

1
@Devin, 예, 그러나 질문을 참조하십시오. :-)
carl

이 기술을 알고 계십니까? stackoverflow.com/questions/375913/… 시각적 인 것은 아니지만 지루하지도 않고 효과를 위해 이기기도 어렵습니다.
Mike Dunlavey

4
@KCacheGrind 애호가 : KDE를 설치할 필요가없는 이유는 KCacheGrind를 사용하지 않는 좋은 이유입니다.
Matt Joiner

답변:


86

친구와 저는 웹 브라우저에서 실행되는 SnakeViz 라는 Python 프로필 뷰어를 작성했습니다 . 이미 RunSnakeRun을 성공적으로 사용하고 있다면 SnakeViz는 그다지 많은 가치를 추가하지 못할 수도 있지만 SnakeViz는 설치하기가 훨씬 쉽습니다.

편집 : SnakeViz는 Python 2 및 3을 지원하며 모든 주요 시스템에서 작동합니다.


41

나는 RunSnakeRun 만 알고 있습니다.

얼마 전에 PyDev (Eclipse)의 통합 프로파일 러에 대한 이야기도 있었지만 그것이 빛을 볼 수 있을지 모르겠습니다.

업데이트 : 불행히도 RunSnakeRun은 더 이상 유지 관리되지 않으며 Python 3을 지원하지 않는 것 같습니다.


RunSnakeRun에 +1. 최고의 도구 IMHO.
codeape dec

4
RunSnakeRun은 좋지만 현재 Python 3에서는 작동하지 않습니다. (2014 년 6 월 True)
Ram Rachum 2014-06-19

@Ram : 정보 주셔서 감사합니다.
그게

1
대신 pyinstrument를 사용했습니다. 다른 동물이지만 유용합니다.
Ram Rachum 2014 년

나는 RunSnakeRun을 좋아하지만 발신자와 피 호출자를 표시하는 방식을 매우 싫어합니다. RunSnakeRun은 호출 수, 현지 시간 및 각 호출자 / 캘리의 누적 시간에 대한 "총"값을 표시합니다. 따라서 누적 시간이 5 초인 함수와 누적 시간이 100 초인 호출 수신자와 같은 것을 가질 수 있습니다. 직관적이지 않고 pstats가 제공하는 것만 큼 유용하지도 않습니다. pstats는 해당 함수와 관련된 컨텍스트 정보를 사용하여 호출자 / 캘리 통계에보다 의미있는 숫자를 제공합니다. 쉽게 볼 수있는 다른 뷰어를 알지 못합니다.
Vultaire 2016-06-24

14

gprof2dot.py를 사용합니다. 결과는 다음 과 같습니다 . 다음 명령을 사용합니다.

  python -m cProfile -o profile.dat my_program.py
  gprof2dot.py -f pstats profile.dat | dot -Tpng -o profile.png

당신은 필요 graphviz를 하고 gprof2dot.py가 설치되어 있어야합니다. 편리한 쉘 스크립트를 원할 수도 있습니다 .


png 대신 svg (dot -Tsvg -o profile.svg 사용)를 출력하면 브라우저에서 출력 그래프를 검색 할 수 있으며 이미지를 재기 스없이 조정할 수 있습니다.
razeh



4

이 사람은 여기 에 설명 된 그래픽 프로필을 만들었습니다 . 아마도 그것을 자신의 작업의 시작점으로 사용할 수 있습니다.


1
매우 멋지지만 분명히 C / C ++에만 해당됩니다. 그래도 파이썬을 사용합니다.
Rory

4

KCacheGrind에는 Mac OS XWindows에서 실행되는 QCacheGrind라는 버전이 포함되어 있습니다 .


또한 OP는 Linux에서 KCachegrind에 대한 종속성을 잘못 해석하는 것 같습니다. Debian / Ubuntu / Mint에서 필요한 것은 apt-get install kcachegrindKDE 관련 라이브러리 3 개만 설치하는 것입니다.
saaj

2
Ubuntu 17.04 설치의 @saaj는 apt install kcachegrind~ 40 KDE 라이브러리를 포함하여 102 개의 패키지를 설치하려고합니다.
Mark E. Haase

@mehaase 신선 ubuntu:xenial하면 3 배 더 많을 수 있지만 개발 환경을위한 것이며 거의 문제로 보지 않습니다. 그리고 실제로 apt-cache depends --recurse --no-recommends --no-suggests --no-conflicts --no-breaks --no-replaces --no-enhances --no-pre-depends kcachegrind | grep kde | grep Depends | sort -u | wc -l단지 13 말한다
SAAJ



1

저는 gprof2dot 의 출력에서 ​​작동 하는 브라우저 기반 시각화 도구 인 profile_eye작성했습니다 .

gprof2dot는 많은 프로파일 링 도구 출력을 처리하는 데 탁월하고 그래프 요소 배치에서 훌륭한 작업을 수행합니다. 최종 렌더링은 종종 매우 어수선한 정적 그래픽입니다.

d3.js를 사용하면 초점이 맞지 않은 요소의 상대적 페이딩, 툴팁 및 어안 왜곡을 통해 이러한 혼란을 상당 부분 제거 할 수 있습니다 .

비교를 위해 gprof2dot에서 사용 하는 표준 예제 의 profile_eye 시각화 를 참조하십시오 . 특히 Python의 경우 cProfile 출력 예제를 참조하십시오 .



0

나는 플롭 을 사용 했고 그것이 매우 가볍다는 것을 알았습니다. 성능에 대한 빠른 통찰력을 제공합니다.


vprofFlamegraph 를 사용하는 유사한 도구이지만 메모리 프로파일 링도 수행 할 수 있습니다. 불행히도 누적 시간 만 표시하고 함수에 소요 된 총 시간은 표시하지 않습니다.
goodmami
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.