Rashik
Rashik

Reputation: 29

Why is my main thread not completing its task?

In the below code the daemon thread is only giving the output whereas the main thread is not. If the main thread works independently of the "x"(daemon) thread then why isn't it asking for input(it is just giving the output of the daemon thread).

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())

Upvotes: 0

Views: 344

Answers (2)

SRISANT PATI
SRISANT PATI

Reputation: 17

You have call your function inside thread class that's why main thread is not working

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


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

Upvotes: 0

Adon Bilivit
Adon Bilivit

Reputation: 26976

For the Thread constructor you should pass a reference to the appropriate function. You do not call the function. Therefore:

x = threading.Thread(target=daemon_thread)

Upvotes: 1

Related Questions