SW개발/Python

Python 프로파일링

초코쨔응 2019. 4. 11. 19:10

Python 코드에서 실행이 오래 걸리는 부분을 알기 위해, cmd창에서 line_profiler를 설치한다. (cmd를 관리자 권한으로 실행해야 하며, 혹시 관리자 권한으로 실행하지 않은 경우 --user를 뒤에 붙여주면 설치된다.)

>> pip install line_profiler

라인 프로파일링을 하기 위해서는 해당 부분이 함수화되어있어야하기 때문에 전체 코드를 함수 안에 넣었다. 다음은 예시 코드이다. 원하는 함수 위에 @profile을 추가해준다.

@profile
def main():
    

    # 소수 미리 찾아두기
    check = [False] * 1000001
    check[0] = True; check[1] = True

    # 에라토스테네스의 체
    for start in range(2, 1000000):
        for cae in range(start+start, 1000000, start):
            check[cae] = True # 거르기
    print(sum(check))        
        
    T = int(input())
    
    for tc in range(T):
        cnt = 0 # 르모앙의 추측 방법의 수
        N = int(input())
        # 홀수 소수 하나를 빼고,
        for prime in range(3, N, 2):
            if check[prime] == False:# 소수이면,
                temp = N - prime
                # 그 temp를 가지고 소수 곱인지 확인
                if temp % 2 == 0 and check[temp//2] == False:
                    cnt += 1
        print(cnt)
  
if __name__ == "__main__":
    main()

그리고 cmd창에서 해당 python 파일이 저장된 경로로 이동한다. (cd 폴더이름)

프로파일링 실행은 cmd 창에서 다음과 같이 명령어를 입력하면 된다. 

>> python -m kernprof -v -l "파이썬 파일 이름.py"

위의 코드는 인풋이 필요했기 때문에 input을 입력하고 나면 다음과 같이 걸린 시간 등이 나온다.

코드를 최적화해가면서 결과값이 얼마나 차이나는지를 확인해가면 된다.

반응형