-
[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 가 될 수 있지 않을까 싶다.
반응형'머신러닝(MACHINE LEARNING) > 코드 리뷰(Code_Review)' 카테고리의 다른 글
파이썬 %autoreload %matplotlib 이란? (0) 2021.07.13 Pytorch torchvision.transforms.normalize 함수 (0) 2021.05.15 SkLearn.Pipeline 에 대해 알아보자 (0) 2021.04.24