Want to code faster? Our Python Code Generator lets you create Python scripts with just a few clicks. Try it now!
In this tutorial, you will learn what are daemon threads in Python and how to set them up, you should have a basic knowledge about threads to follow up in this tutorial.
A daemon thread is a thread that dies whenever the main thread dies, it is also called a non-blocking thread. Usually, the main thread should wait for other threads to finish in order to quit the program, but if you set the daemon flag, you can let the thread do its work and forget about it, and when the program quits, it will be killed automatically.
This is useful for many scenarios, suppose you are doing some web scraping tasks, and you want to make a thread that alerts you in email whenever a new item is inserted in that particular website you're scraping.
Another example you may want to make a thread that watches for log files in your program, and alert you when a critical error is occured.
In the end of the tutorial, we'll share with you some tutorials that we found useful to use daemon threads in.
Now that you know what a daemon thread is, and you know it's useful, let's take a demonstration example, the following code initiates a non-daemon thread and start it, and then we end the main thread as well:
import threading import time def func(): while True: print(f"[{threading.current_thread().name}] Printing this message every 2 seconds") time.sleep(2) # initiate the thread to call the above function normal_thread = threading.Thread(target=func, name="normal_thread") # start the thread normal_thread.start() # sleep for 4 seconds and end the main thread time.sleep(4) # the main thread endsThe func() function should run forever, as we're setting True as the condition of the while loop. After we started that thread, we make a simple sleep in the main thread and exit the program.
However, if you run it, you'll see the program keeps running and won't allow you to exit (only if you close the window):
[normal_thread] Printing this message every 2 seconds [normal_thread] Printing this message every 2 seconds [normal_thread] Printing this message every 2 seconds [normal_thread] Printing this message every 2 seconds [normal_thread] Printing this message every 2 seconds ...goes foreverSo the non-daemon thread is making the program refuses to exit until it's finished.
The following example initiates a daemon thread this time:
import threading import time def func_1(): while True: print(f"[{threading.current_thread().name}] Printing this message every 2 seconds") time.sleep(2) # initiate the thread with daemon set to True daemon_thread = threading.Thread(target=func_1, name="daemon-thread", daemon=True) # or # daemon_thread.daemon = True # or # daemon_thread.setDaemon(True) daemon_thread.start() # sleep for 10 seconds and end the main thread time.sleep(4) # the main thread endsNow we pass daemon=True to threading.Thread class to indicate that it's a daemon thread, you can also access the daemon attribute to True or use the setDaemon(True) method.
Let's execute the program:
[daemon-thread] Printing this message every 2 seconds [daemon-thread] Printing this message every 2 secondsThis time once the main thread finishes its work, the daemon thread also gets killed automatically and exits the program.
Below are some of the tutorials in which we used daemon threads to accomplish our tasks:
Happy coding ♥
Loved the article? You'll love our Code Converter even more! It's your secret weapon for effortless coding. Give it a whirl!
View Full Code Build My Python CodeJoin 50,000+ Python Programmers & Enthusiasts like you!
Email address Subscribe This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.Ethical Hacking with Python EBook
Web Security with Python EBook
Cryptography with Python EBook
Practical Python PDF Processing EBook
Real-Time Traffic Monitoring System with YOLOv9 eBook
Mastering YOLO: Build an Automatic Number Plate Recognition System
© 2026 The Python Code. All rights reserved.
Got a coding query or need some guidance before you comment? Check out this Python Code Assistant for expert advice and handy tips. It's like having a coding tutor right in your fingertips!