2012-04-08 2 views
1

threading.Thread()의 하위 클래스를 생성 할 때 .join() 메서드를 오버 라이딩했습니다. 테스트 스크립트로 클래스를 테스트 할 때 잘 동작하지만, 내 프로그램에서 사용할 때 thread.join) 메소드를 계속 호출하고 있지만 그 일을하지는 않습니다. 이 방법을 무엇이라고 부릅니까? 내가 말할 수있는 한 예외는 없습니다. 검사 호출 함수를 사용하여 _exitfunc 것으로 보이지만이 정보를 찾을 수 없습니다.thread.join()이 호출되었고 그 것이 아니라

내 코드를 게시 할 길이로하지만 호출 기능이 join 방법은 프로그램 종료시 호출되는 것을 의미 _exitfunc 경우 here

답변

1

찾을 수 있습니다. 이것은 파이썬 스레딩 프레임 워크가 프로그램 종료의 일부로 모든 비 데몬 스레드를 실행하여 join을 호출하기 때문에 예상됩니다.

_exitfunc의 가장 좋은 설명은 다른 스택 오버플로 질문 : What is a python thread

0

원하지 않는 경우 join() 프로그램이 종료가 스레드를 데몬 할 때 호출되는 :

t.daemon = True 

비 데몬 스레드는 모두 죽을 때까지 프로세스를 계속 실행합니다.