我的守护线程为什么会暂停调用函数的执行?

问题描述:

如果我的问题的术语不完全正确,请原谅我;我不是一个专业程序员。我的守护线程为什么会暂停调用函数的执行?

这是我的守护线程调用函数:

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秒睡眠被指定):

开始暂停

暂停控制台

静音

静音

暂停守护线程开始

我期待的是 “暂停守护..” 之前 '静音' 至少会出现..也就是说,线程启动后主循环的执行会继续。然而,在我看来,'cm.start()'必须在'print(“暂停守护进程线程启动之前退出。”)'语句被执行?

我在做什么错误或我的概念错误在哪里?

(很难相信没有人遇到过这一点,但我似乎无法找到在这里类似的问题)

因为你的代码立即调用目标函数在构造Thread对象。您应该将其替换为以下内容:

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

非常感谢。这是有道理的。 –