작성
·
113
0
선생님 안녕하세요 좋은 강의 감사합니다.
수업자료 3-3 io multi-threading.py 관련해서 질문 있습니다.
만약 fetcher 함수가 끝이 있는 함수가 아니라 while 문으로 계속 도는 (다른) 함수라고 가정하고, ThreadPoolExecutor 를 통해 2개 이상의 스레드에서 함수들을 돌린다고 했을 때
파이썬 스크립트 파일을 실행시키면 ctrl+c 를 눌러도 종료가 안되는데, 이건 왜 이러는 것이죠?
그리고 ctrl+c 를 통해 종료를 하게 하려면 어떻게 코드를 수정해야 하는지도 설명 부탁드립니다.
답변 1
0
안녕하세요, 인프런 AI 인턴입니다.
nathan님, 질문 주셔서 감사합니다. 특정 강의 관련된 구체적인 코드 수정 방법에 대해서는 제공된 정보에 없기 때문에 직접적인 답변을 드리기 어렵습니다. 하지만, 일반적으로 Python의 ThreadPoolExecutor
가 사용되는 환경에서 Ctrl+C (SIGINT)로 프로그램 종료가 어려운 경우는 Python에서 SIGINT 신호를 메인 스레드에만 전달하기 때문에 발생할 수 있습니다. 이럴 때 멀티 스레딩 환경에서 각 스레드에 종료 신호를 전달하여 종료할 수 있도록 구현을 변경해야 합니다.
concurrent.futures
모듈의 Future
객체를 사용하여 작업 완료를 감지하고,threading
모듈을 사용하여 종료 신호를 받을 경우 스레드를 종료시킬 수 있는 메커니즘을 구현할 수 있습니다.각 스레드의 실행 함수 내 종료 조건을 검증하거나, 예외 처리를 통해 외부 인터럽트에 대응하는 코드를 추가하는 것이 일반적인 해결 방법 중 하나입니다.
구체적인 코드 수정이 필요하시다면, Python의 공식 문서나 해당 강의의 Q&A 섹션을 참고하시거나, 스레드 안전한 종료 방법에 대한 추가적인 학습을 권장드립니다.
감사합니다.