2012-05-15 4 views
0

Python의 데몬 스레드에서 차단 코드를 실행하는 주 스레드에서 예외를 어떻게 트리거합니까?파이썬의 데몬 스레드에서 주 스레드의 예외 트리거

나는 현재 프로세스가 종료되어야한다는 (즉, 사용자가 "취소"버튼을 눌렀 음) 것을 나타내는 레코드를 데이터베이스에서 주기적으로 검사하는 데몬 스레드를 가지고 있습니다. 내 주요 비 데몬 스레드에서 정상적으로 종료하도록 쉽게 수정할 수없는 외부 프로세스에 대한 차단 호출을 실행 중입니다. 그러나 수동으로 트리거 할 때 기본 스레드가 정상적으로 KeyboardInterrupt를 정상적으로 처리 할 수 ​​있습니다.

내 데몬 스레드가 종료 명령을받는 경우 프로세스를 종료하기 위해 주 스레드에서 예외를 발생시키는 방법은 무엇입니까?

답변

1

스레드 문서를 파고 나면 결국 솔루션이 interrupt_main() 인 것으로 나타났습니다.

+0

링크는 다음과 같아야합니다. https://docs.python.org/3/library/_thread.html 코드에서 장고를 중지하는 드문 솔루션입니다. – user508402

0

returncode 속성을 사용하여 서브 프로세스 리턴 코드를 얻을 수 있습니다. 0이 아닌 다른 값을 올리십시오.

편집 : 하위 프로세스와 다중 처리 모듈을 혼합했습니다. 그러나 서브 프로세스 리턴 코드 속성과 유사한 다중 처리 모듈에 exitcode 속성이 있습니다.

+0

제 질문은 멀티 프로세싱이 아니라 스레딩에 관한 것입니다. – Cerin

관련 문제