분석시각화 대회 코드 공유 게시물은
내용 확인 후
좋아요(투표) 가능합니다.
2023 교원그룹 AI OCR 챌린지
BaseLine 코드에서 발생하는 windows num_workers 문제
밑에 댓글에 작성하려고 했는데 1000자에 걸려서 따봉도 받아볼 겸 글로 작성해보겠습니다.
windows 의 jupyter 에서 multiprocessing이라 그런 것으로 보입니다.
Since Windows has no fork, the multiprocessing module starts a new Python process and imports the calling module. If Process() gets called upon import, then this sets off an infinite succession of new processes (or until your machine runs out of resources). This is the reason for hiding calls to Process() inside
Windows에서 multiprocessing 코드가 동작하면 linux의 fork와는 달리(windows에 없으므로) 새 프로세스를 만들면서 importing을 하게 되는데 이때 해당 코드가 실행되면서 다시 Process()가 실행되면서 무한으로 새 process를 만들어버리는 루프에 빠지는 것 으로 보입니다.
Functionality within this package requires that the __main__ module be importable by the children. This is covered in Programming guidelines however it is worth pointing out here. This means that some examples, such as the multiprocessing.Pool examples will not work in the interactive interpreter
jupyter에서 동작하고 싶으시다면 multiprocessing을 off 하기위해 num_workers=0 로 주시거나
py로 변환하여 if __name__ == '__main__' 구문에 넣거나 하시면 되겠습니다.
WSL 환경에서 작동시키면 돌아간다는 얘기도 있던데 해보지는 않아서 모르겠네요.
참고 :
https://github.com/pytorch/pytorch/issues/51344
데이콘(주) | 대표 김국진 | 699-81-01021
통신판매업 신고번호: 제 2021-서울영등포-1704호
서울특별시 영등포구 은행로 3 익스콘벤처타워 901호
이메일 dacon@dacon.io | 전화번호: 070-4102-0545
Copyright ⓒ DACON Inc. All rights reserved