• Tistory
    • 태그
    • 위치로그
    • 방명록
    • 관리자
    • 글쓰기
Carousel 01
Carousel 02
Previous Next

골뱅이, decorator를 이용하여 함수 실행시간을 측정하자.

Programming/Python 2020. 1. 7. 12:18




프로그램을 구현하다 보면 특정 기능이 어느정도 시간을 소요하는지 확인이 필요한 경우가 있다.

 

이럴때 보통 아래와 같이 시간 측정을 위한 code 앞뒤에서 time 라이브러리를 이용하여 시간을 계산했다.

import time

start_time = time.time()

# 실행시간을 측정 할 code
# ~~~~~~~~~~~~~~~~~~~~~

print("Processing time : %.2f ms" % ((time.time() - start_time)*1000))

하지만 이런 방법은 한두군데 확인 하거나 잠깐 확인 할 때는 괜찮지만 

작성하는 부분이 많아질수록 가독성도 떨어지고 관리가 불편하다는 단점이 있다.

 


그래서 사용 가능한 기능이 파이썬의 데코레이터 라는 기능!

함수 이전에 선언이 필요하고 선언 후에는 실행 할 함수 앞에 @ 키워드와 함께 호출해주면

해당 함수를 wrapping 해줘서 decorator에 정의된 기능을 함께 수행 하게 된다.

 

import time

# decorator는 다른 함수보다 앞서 선언되어야 한다!
def processing_time(func):
    def wrapper_fn(*args, **kwargs):
    	start_time = time.time()
        func_result = func(*args, **kwargs)
        print("Processing time : %.2f ms" % ((time.time()-start_time)*1000))
        return func_result
    return wrapper_fn

@ precessing_time
def function_01():
    # 실행시간을 측정하고 싶은 함수 선언
    # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    print("function_01")

def function_02():
    # decorator 사용 안할 함수는 일반적으로 그대로 사용하면 된다.
    print("function_02")

if __name__ == "__main__":
    function_01()
    function_02()

 

이러한 기능을 이용하여 나는 deeplearning model의 inference time을 측정하는 함수를 만들어 사용 중이다.

import time

# decorator는 다른 함수보다 앞서 선언되어야 한다!
def processing_time(func):
    def wrapper_fn(*args, **kwargs):
    	start_time = time.time()
        func_result = func(*args, **kwargs)
        print("Processing time : %.2f ms" % ((time.time()-start_time)*1000))
        return func_result
    return wrapper_fn

@ processing_time
def get_forward(model, data):
    return model(data)


if __name__ == "__main__":
    # model & data 선언
    get_forward(model, data)

 

 

참고자료 : http://schoolofweb.net/blog/posts/%ED%8C%8C%EC%9D%B4%EC%8D%AC-%EB%8D%B0%EC%BD%94%EB%A0%88%EC%9D%B4%ED%84%B0-decorator/

저작자표시

'Programming > Python' 카테고리의 다른 글

Anaconda 가상환경 구동 및 프로그램실행을 batch로 만들자  (1) 2020.05.12
python에서의 Asterisk는 무슨일을 하는가.  (0) 2020.03.09
골뱅이, decorator를 이용하여 함수 실행시간을 측정하자.  (0) 2020.01.07
python-virtualenv를 이용해 가상환경을 설정하자  (0) 2020.01.02
설정 값 저장을 위해 ConfigParser를 이용 해 보자.  (0) 2019.12.02
상태 진행률을 시각적으로 표현하자 (tqdm)  (0) 2019.11.13
블로그 이미지

매직블럭

작은 지식들 그리고 기억 한조각

트랙백 0개, 댓글 0개가 달렸습니다

댓글을 달아 주세요

  • «
  • 1
  • ···
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • ···
  • 51
  • »

카테고리

  • 살다보니.. (418)
    • 주절거림 (3)
    • 취미생활 (36)
      • 지식과 지혜 (3)
      • 풍경이 되어 (4)
      • Memories (17)
      • 엥겔지수를 높여라 (2)
    • mathematics (6)
      • Matrix Computation (2)
      • RandomProcesses (3)
    • English.. (8)
    • Programming (138)
      • C, C++, MFC (51)
      • C# (1)
      • OpenCV (17)
      • Python (51)
      • Git, Docker (3)
      • Matlab (4)
      • Windows (3)
      • Kinect V2 (2)
      • 기타 etc. (6)
    • 전공관련 (73)
      • Algorithm (6)
      • Deep Learning (49)
      • 실습 프로그램 (4)
      • 주워들은 용어정리 (8)
      • 기타 etc. (6)
    • Computer (104)
      • Utility (21)
      • Windows (24)
      • Ubuntu, Linux (55)
      • NAS (2)
      • Embedded, Mobile (2)
    • IT, Device (41)
      • 제품 사용기, 개봉기 (14)
      • 스마트 체험단 신청 (27)
    • Wish List (3)
    • TISTORY TIP (5)
    • 미분류. 수정중 (1)

태그목록

  • Convolutional Neural Networks
  • function
  • CStdioFile
  • 큐슈
  • 스마트체험단
  • Deep Learning
  • Computer Tip
  • 에누리닷컴
  • 오봉자싸롱
  • 갤럭시노트3
  • 매트랩
  • 딥러닝
  • ReadString
  • 칼로리 대폭발
  • 매트랩 함수
  • matlab
  • 일본
  • 크롬
  • utility
  • DSLR
  • matlab function
  • 후쿠오카
  • SVM
  • ColorMeRad
  • portugal
  • LIBSVM
  • random variable
  • review
  • DeepLearning
  • 포르투갈

달력

«   2022/08   »
일 월 화 수 목 금 토
  1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31      
08-14 12:41

LATEST FROM OUR BLOG

  • windows terminal(powershell⋯.
  • vscode terminal 에 conda를⋯.
  • vscode에 conda 가상환경을⋯.
  • vscode keymap을 변경하자.
  • 골뱅이 연산자의 의미 (행렬곱)..
  • 프린터 용지 부족 문제를 해⋯.
  • [MXNet] 데이터 리스트를 만⋯.
  • 예쁘게 출력하자 pprint - pr⋯.
  • 작업표시줄 미리보기를 리스⋯.
  • 이미지 실제 파일 포맷 확인하기.
RSS 구독하기

BLOG VISITORS

  • Total : 1,149,449
  • Today : 38
  • Yesterday : 164

Copyright © 2015 Socialdev. All Rights Reserved.

티스토리툴바