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

Why is my Daemon thread pausing the calling function's execution?

如果我的问题的术语不太正确,请原谅我;我不是专业的程序员。

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

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

由这段代码调用(都在同一个class):

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

控制台输出按以下顺序打印我的打印语句(指定 30 秒睡眠):

starting pause

pausing console

muted

unmuted

pause daemon thread started

我期待“暂停守护进程..”至少会在 'unmuted' 之前出现...即,主循环执行将在线程启动后继续。但是,(在我看来)'cm.start()' 必须在执行 'print("pause daemon thread started.")' 语句之前退出?

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

(很难相信以前没有人遇到过这个问题,但我在这里似乎找不到类似的问题)

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

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