0

내 질문의 용어가 정확하지 않은 경우 용서해주세요. 나는 전문 프로그래머가 아니다.내 데몬 스레드가 호출하는 함수의 실행을 일시 중지하는 이유는 무엇입니까?

pausetime = 30 
    print("starting pause...") 
    cm = threading.Thread(target=self._pause_console(pausetime), args=()) 
    cm.daemon = True 
    cm.start() 
    print("pause daemon thread started.") 

콘솔 출력 인쇄 내 인쇄 문 (:

def _pause_console(self, pause_time): 
    print("pausing console") 
    self.javaserver.server_muted = True 
    print("muted") 
    time.sleep(pause_time) 
    print("unmuted") 
    self.javaserver.server_muted = False 

그것은이 코드 (같은 클래스의 모든)에 의해 호출됩니다

내 데몬 스레드가 호출하는 기능입니다 30 초 수면 지정) :

시작 일시 중지

콘솔을

음소거

음소거 해제

일시 정지 데몬 스레드를 일시 중지 0

나는 것을 기다리고 있었다

을 시작했다 "데몬을 중지 .."적어도 '뮤트'전에 보여 것입니다 .. 즉, 스레드가 시작된 후 기본 루프 실행이 계속됩니다. 그러나 'print ("pause 데몬 스레드 시작.")'문이 실행되기 전에 'cm.start()'가 종료되어야합니다 (나에게)?

내가 잘못했거나 개념상의 오류는 어디에 있습니까?

(하드 아무도 전에이 발생하지 않았다 생각합니다,하지만 난 여기에 비슷한 질문을 찾을 수 없습니다) Thread 객체를 구성하는 동안 코드가 즉시 대상 함수를 호출하기 때문에

답변

1

. 다음과 같이 바꿔야합니다.

cm = threading.Thread(target=self._pause_console, args=(pausetime,)) 
+0

고맙습니다. 이제는 의미가 있습니다. –