Corgi Dog Bark

ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Python] with 이란
    머신러닝(MACHINE LEARNING)/코드 리뷰(Code_Review) 2021. 5. 17. 03:24
    반응형

    - 결론부터 말하자면 ,파이썬에서의 with 이란 컴퓨터에게 필요한 자원을 다시 반납 토록 하는 일이다.

     

    - 파이썬의 수많은 책들이 있지만, with을 하면 어떻게 되고 어떻게 되고, ~ 의 식의 풀이만 나열뿐 왜 사용하는지 알려주는 책은 많이 못본것 같다.

     

    - With의 경우, 제일 간단한 예제를 보게 되면, with 은 맨처음 시작할 떄, __open__ 이라는 method를 호출하고 with 구문을 빠져 나가게 되면 __exit__ 이라는 method 를 호출하게 된다. [ 다음 코드 : https://m.blog.naver.com/PostView.nhn?blogId=wideeyed 참고]

    class Hello:
        def __enter__(self):
            # 사용할 자원을 가져오거나 만든다(핸들러 등)
            print('enter...')
            return self # 반환값이 있어야 VARIABLE를 블록내에서 사용할 수 있다
            
        def sayHello(self, name):
            # 자원을 사용한다. ex) 인사한다
            print('hello ' + name)
    
        def __exit__(self, exc_type, exc_val, exc_tb):
            # 마지막 처리를 한다(자원반납 등)
            print('exit...')
    with Hello() as h:
        h.sayHello('obama')
        h.sayHello('trump')

    의 결과를 살피게 되면, 다음과 같이 나오게 된다. 이는 맨처음 __init__ 을 사용하여 , enter...  를 출력하고, 그다음 sayHello('obama') 구문, 그 다음 sayHello('trump') 구문을 실행하고 이제 ,  with 구문을 빠져나오게 되면서, __exit__ 을 실행하게 된다.

    [결과]
    enter...
    hello obama
    hello trump
    exit...

     

     

    - 그럼 이제 왜 필요한지가 설명 될것이다. 단순히 파일 열고 닫고, 이런 문제가 아닌, 컴퓨터의 자원 관리 측면에서 유리하기 때문이다. 데이터 핸들링 작업에서도 마찬가지이다. 

     

    - 우리가 파일을 읽고 쓸때, 데이터를 del 로 지워주진 않는다. 따라서 우리의 컴퓨터는 계속된 자원낭비를 하게 되고, 이를 막기 위해서 with 구문을 쓰는 것이다...

     

    - 따라서 단순히 file.open 할때 with 을 쓰는게 아니라 자원관리를 효율적! 으로 하기 위해 쓰는 것이고, 머신러닝 모델도 마찬가지로 데이터의 크기가 대부분 크기 때문에 , 이미지 파일 이나 여러가지를 순간적으로 보고 싶다 했을때, 이 with 구문을 잘 활용한다면 더욱 멋진 code 가 될 수 있지 않을까 싶다.

    반응형

    댓글

Designed by Tistory.