일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
- shrinkmatch
- WGAN
- tent paper
- dcgan
- 최린컴퓨터구조
- remixmatch paper
- mocov3
- adamatch paper
- Pseudo Label
- SSL
- Pix2Pix
- UnderstandingDeepLearning
- 컴퓨터구조
- BYOL
- simclrv2
- semi supervised learnin 가정
- Meta Pseudo Labels
- shrinkmatch paper
- CycleGAN
- ConMatch
- Entropy Minimization
- GAN
- dann paper
- cifar100-c
- 딥러닝손실함수
- mme paper
- CoMatch
- CGAN
- 백준 알고리즘
- conjugate pseudo label paper
- Today
- Total
Hello Computer Vision
__name__ == '__main__' 쓰는 이유 본문
파이썬 코드들을 보면은 많은 코드들에서 if __name__ == '__main__': 이라는 것을 발견할 수 있다. 물론 많은 분들이 이에 대해 작성해놓았지만 안잊어버리기 위해 적어놓으려고 한다.
우선 __name__ 은 파이썬에 내장되어 있는 변수라고 할 수 있다. 해당 변수는 만약 파일이 interpreter통해 수행된다면(해당 파일이 직접적으로 수행된다면) __main__ 이라는 변수가 되는 거고 만약 다른 파일로부터 import 되서 수행된다면 해당 파일의 이름으로 변수가 저장된다.
예시를 통해 알아보는 것이 제일 빠르다.
def print_test():
if __name__ == '__main__':
print('interpreter 통해 직접 출력')
else:
print('해당 파일 import 해서 출력')
print(__name__)
위 코드는 test.py 파일에 작성되어있는 코드들이다. 살펴보자면 만약 test 파일을 직접 수행하면 if문이 수행될 것이고 다른 파일에서 import 되서 수행된다면 아래 코드가 수행될 것이다.
import test
test.print_test()
if __name__ == '__main__':
print('test2.py 수행')
print(__name__)
아래 코드는 test2.py 에 작성되어있는 코드들이다. test2 파일을 직접 수행해보겠다.
해당 파일 import 해서 출력
test
test2.py 수행
__main__
먼저 test파일에 있는 print_test() 함수를 출력시도했고, 함수안에 있는 내용이 출력된다. 그러나 test2 파일을 통해 출력한 것이므로 else 아래에 작성되어 있는 코드가 수행되고, test 파일 안에 있는 __name__변수가 출력되었는데 이는 test 값으로 들어가있음을 알 수 있다.
그리고 test2 파일을 직접수행했으므로 test2.py 수행 이라는 문구가 출력되고 마지막으로 __name__ 변수를 출력해보면 main 임을 알 수 있다.
결론: __name__ == '__main__' 을 사용하는 이유를 단순히 말하자면 해당 모듈 및 파일을 다른 곳에서 수행되었을 때 불필요한 수행을 막을 수 있으며 다른 파일에서 import 했을 때 재사용하기 쉽다(만약 import했을 때 모든 것을 다시 수행한다면 더 많은 부분으로 세분화해서 쪼개야할 것 같다)
'딥러닝 > 파이토치' 카테고리의 다른 글
torch SummaryWriter 에 관한 자그만한 정보 (0) | 2024.01.05 |
---|---|
[pytorch] 처리하고자 하는 배치사이즈가 다를 때 해결방법 (1) | 2023.12.29 |
torchvision.dataset 조금 뜯어보기 (1) | 2023.12.21 |
torch.cuda.amp GradScaler 공부해보기 (0) | 2023.07.11 |
pretrained 모델에 fc레이어 추가해보기 (0) | 2023.05.14 |