为什么我的主线程没有完成它的任务?

Why is my main thread not completing its task?

在下面的代码中,守护线程只提供输出,而主线程则没有。如果主线程独立于“x”(守护进程)线程工作,那么为什么它不要求输入(它只是提供守护线程的输出)。

import threading
import time
def daemon_thread():
    print()
    timer = 0
    while True:
        time.sleep(1)
        timer += 1
        print(timer, "s")

x = threading.Thread(target=daemon_thread(), args=())
x.start()
answer = input("Do you wish to exit?")
print(threading.active_count())

对于 Thread 构造函数,您应该传递对适当函数的引用。您不调用该函数。因此:

x = threading.Thread(target=daemon_thread)

您在线程中调用了您的函数class,这就是主线程不工作的原因

X = threading.Thread(target=daemon_thread())  
# Wrong


X = threading.Thread(target=daemon_thread)
# Right