【Python】 처리마다 소요 시간이 명확해지는 스마트 with 문 + @contextmanager 사용법

처리의 소요 시간이 명확한 코드는 고맙다.



기계 학습 로직을 작성하는 방법은 각 사람이지만,
개인적으로 기계 학습의 코드를 보고 「이케 하고 있다...
역시 기계 학습은 처리에 시간이 걸리므로, 시간에 관한 정보가 명확한 코드는 배려가 세심하고 있다고 느낍니다.
처리 소요 시간은 with 문과 contextmanager를 사용하여 간결하게 출력할 수 있습니다.
아래 템플릿을 참조하세요.

코드 템플릿



script.py
import time
from contextlib import contextmanager
from time import sleep

@contextmanager
def timer(title):
    t0 = time.time()
    yield
    print("{} - done in {:.0f}s".format(title, time.time() - t0))

def data_import():
    sleep(10)

def data_preprocessing():
    sleep(20)

def train():
    sleep(30)

def main():
    with timer("Process data_import"):
        data_import()
    with timer("Process data_preprocessing"):
        data_preprocessing()
    with timer("Process train"):
        train()


if __name__ == "__main__":
    with timer("Full model run"):
        main()

실행 결과


Process data_import - done in 10s
Process data_preprocessing - done in 20s
Process train - done in 30s
Full model run - done in 60s

각 방법에서 처리 시간,
그리고 마지막으로 전체 처리의 소요 시간이 출력됩니다.
이상, 꼭 활용해 주세요!

좋은 웹페이지 즐겨찾기