Python의 With로 실행 시간 측정

할 수 있게 되는 것



with를 사용하여 시간 측정을 할 수 있게 된다.
Kaggle 등으로 시간을 계측할 때 사용할 수 있다.

참고



메르카리 대회 1위 코드 에서 사용되었습니다.

사용방법



컨텍스트 관리자로 사용하려는 함수 정의 바로 전에 @contextmanager

타이머가 호출되면 초기 시간이 t0에 저장되고 yeild에서 임시 함수를 빠져 나갑니다.
time.sleep(1)의 처리 종료 후에 다시 타이머로 돌아와 초기 시간과의 차분을 출력하고 있다.

qiita.rb
from contextlib import contextmanager
import time

@contextmanager
def timer(name):
    t0 = time.time()
    print("start")
    yield
    print("end")
    print(f'[{name}] done in {time.time() - t0:.0f} s')


with timer('process train'): 
        time.sleep(1)



@contextmanager 의 기재가 없는 경우는 timer 는 contextmanager 로서 동작할 수 없기 때문에 에러가 된다.


컨텍스트 관리자



with 분과 컨텍스트 관리자
컨텍스트 관리자는 코드 블록을 실행하는 데 필요한 입구 및 출구 처리를 처리한다.

이하의 예와 같이, 컨텍스트 매니저 클래스에는, 개시용의 처리와 종료시용의 처리가 기재되어 있다. 따라서 @contextmanager 에서 컨텍스트 매니저로 하면, 시작시와 종료시에 타이머가 불리게 된다. @contextmanager 을 기재하지 않았던 경우는 enter 의 정의가 없기 때문에 에러가 되었다.

참고

좋은 웹페이지 즐겨찾기