2017-12-17 16 views
0

표준 프로파일 러의 출력은 일반적으로 저수준 함수에 소요되는 시간에 대한 세부 사항으로 막혀 있습니다. 크고 복잡한 프로젝트에서 코드의 어느 부분이 다른 부분보다 오래 걸리는 지에 대한 일반적인 아이디어를 얻고 싶습니다.파이썬을 고정 콜 깊이로 프로파일 링

특히 특정 호출 깊이로 제한된 결과를보고하도록 프로파일 러에 지시하는 방법이 있는지 궁금합니다. 예를 들어 depth = 0으로 설정하면 전체 파이썬 스크립트의 총 시간 만 표시됩니다. depth = 1은 스크립트의 개별 행에 시간을 표시 할 수 있습니다. depth = 2는 스크립트에서 함수가 호출하는 함수에 시간을 표시 할 수 있습니다.

이러한 도구가 있습니까?

답변

1

정확하지 않을 수도 있지만 개인적으로는 pyprof2calltree 매우 유용합니다. 내장 된 cProfile의 출력을 KCacheGrind과 같은 도구로 understtod 형식으로 변환합니다. (다른 위젯 세트를 사용하는 구현도 있습니다 (예 : qcachegrind).

KCacheGrind와 같은 도구를 사용하면 프로파일 링 된 코드의 호출 트리를 시각화 할 수 있으며 특정 호출 함수의 호출 수신자 (즉, 최상위 주 함수)가 가장 많은 시간을 소비하는지 쉽게 확인할 수 있습니다. 첨부 된 스크린 샷을 확인하여 더 좋은 아이디어를 얻으십시오. profile visualization (이미지 출처 : link) :

pyprof2calltree -k -i todo_profile.cprof 

-i 옵션은 내가 nput 파일이 무엇인지 지정 pyprof2calltree 설치 KCacheGrind

는 프로파일 러 출력을 시각화하는 단일 명령의 문제입니다 -k 스위치는 설치된 시각화 도구 (예 : KCacheGrind)를 실행합니다.