티스토리 뷰
python lecture/basic
[edu] 벤치마크 (benchmark, time, timeit, decorator, context manager, 시간, 성능)
burningrizen 2019. 1. 25. 14:08[time]
foo 함수의 실행완료 시간을 다음과 같이 측정할 수 있다.
너무 간단한 연산에는 0에 가까울 것이다.
def foo():
print("foo")
import time
start = time.time()
foo()
print("delay=", time.time()-start)
[timeit]
time 으로 시간을 측정해도 되지만
좀더 정확한 시간을 측정하고자 개발됐다.
timeit 모듈은 프로그램을 여러번 실행해 os 에 관련 없는 요인으로부터 영향을 덜 받아 정확한 측정이
가능하게 해 직접적인 컨트롤이 필요없다.
import timeit
import time
start = timeit.default_timer()
print("start")
time.sleep(2)
print("end")
end = timeit.default_timer()
print(end-start)
[decorator]
데코레이터를 통해서 시간측정을 좀더 편하게 할 수있다.
래퍼에서 함수 시작전과 끝난 후에 각각 시간측정하는 코드를 삽입하다.
import timeit
import time
def timer(func):
def wrapper(*args, **kwargs):
start = timeit.default_timer()
val = func(*args, **kwargs)
end = timeit.default_timer()
print(f"delay={end-start}")
return val
return wrapper
@timer
def foo(delay):
print("start")
time.sleep(delay)
print("end")
foo(2)
[context manager]
컨텍스트 매니저에는 시작할때 즉 with 키워드에서 enter 가 호출되고 종료할때 exit 가 호출된다.
이것을 이용해 타이머 클래스를 만들어 보자.
import timeit
import time
class Timer:
def __init__(self):
self.start = 0
def __enter__(self):
self.start = timeit.default_timer()
return self
def __exit__(self, exc_type, exc_val, exc_tb):
end = timeit.default_timer()
print(f"delay={end-self.start}")
with Timer() as t:
print("start")
time.sleep(2)
print("end")
'python lecture > basic' 카테고리의 다른 글
[edu] map 함수 (builtins, lambda, list) (0) | 2019.01.28 |
---|---|
[edu] while 예제 모음 (스택, 문자열) (0) | 2019.01.28 |
[edu] container , iterable, iterator, generator (컨테이너, 이터레이블, 이터레이터, 제네레이터) (0) | 2019.01.24 |
[edu] 컬렉션에서 아이템 찾기 (검색 성능) (0) | 2019.01.24 |
[edu] 사용하지 않을 변수 만들기 ( _ ) (0) | 2019.01.24 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 모바일 스킨 적용
- 이미지 비교
- 플러스친구 자동응답
- GIT
- pycrypto
- 엑셀 비교
- 모바일 테마 적용
- chatbot
- 문과 코딩
- 파이썬
- 파이썬 입문
- 면접정답
- PuTTYGen
- wsgi
- 파이썬 강좌
- 문서 비교
- 면접답변
- admin.py
- 파이썬 독학
- virtualenv
- 장고 플러스친구 자동응답
- 장고
- 파이썬 프로그래밍
- django
- gitignore
- gitlab
- Tistory
- Python
- django chatbot
- 장고 카톡 자동응답
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함