2017-12-25 43 views
0

저는 파이썬에서 memory_profiler을 사용하고 있으며 코드 일부를 프로파일 링하고 있습니다. 하지만 테스트 스위트에서 함수가 호출되는 것과 같이 테스트가 발생하는 경우에만 활성화하고 싶습니다. 프로덕션 환경에서 코드가 실행될 때 프로파일 러가 활성화되는 것을 원하지 않습니다. 그것을 할 방법이 있습니까?python으로 테스트 할 때만 메모리 프로파일 러를 활성화하는 방법은 무엇입니까?

"테스트가 진행 중일 때만 데코레이터를 활성화하는 방법"과 같은 일반적인 제안이 열려 있습니다.

예제 코드 -

from memory_profiler import profile 

@profile(precision=4) 
def my_func(): 
    a = [1] * (10 ** 6) 
    b = [2] * (2 * 10 ** 7) 
    del b 
    return a 

답변

1

데코레이터,

@profile(precision=4) 
def my_func(): 
    ... 

가이 글을 쓰는 단지 멋진 방법입니다 따라서

def my_func(): 
    ... 

my_func = profile(precision=4)(my_func) 

당신이 "조건부 장식"을 필요로하는 경우, 조건을 후자에게 적용 할 수 있습니다.

from memory_profiler import profile 

testing = False 
def my_func(): 
    a = [1] * (10 ** 6) 
    b = [2] * (2 * 10 ** 7) 
    del b 
    return a 

if testing: 
    my_func = profile(precision=4)(my_func) 
+0

변수'my_func'는 함수 이름'my_func'와 동일합니다. 의도적입니까, 그냥 이름입니까? –

+0

@ AnirbanNag'tintinmj '의도적입니다. – abccd

+0

변수 이름을 함수와 동일하게 유지하지 않으면 작동하지 않습니다. –