GV

GeezerVison

The World Wide Web, restored to 800 pixels of glory.

Home|About|Gaming cabinet|Archives|How it works|Starter sites

On this site

  • The Python Code
  • Tutorials
  • Ethical Hacking
  • Machine Learning
  • General Python Tutorials
  • Web Scraping
  • Finance
  • Computer Vision
  • Python Standard Library
  • Application Programming Interfaces
  • Database
  • Game Development
  • Web Programming
  • Digital Forensics

This view

  • Original page
  • New address

GeezerVison is showing thepythoncode.com — Daemon Threads in Python - The Python Code

Turn your code into any language with our Code Converter. It's the ultimate tool for multi-language programming. Start converting 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 ends

The 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 forever

So 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 ends

Now 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 seconds

This time once the main thread finishes its work, the daemon thread also gets killed automatically and exits the program.

Real Examples

Below are some of the tutorials in which we used daemon threads to accomplish our tasks:

  • Making a Keylogger in Python: a daemon thread to send keylogs to our email or saves to a file.
  • Making a Port Scanner in Python: multiple daemon threads to scan for ports.
  • Brute Forcing FTP Servers with Python: multiple daemon threads to attempt an FTP login.
  • Making a Chat Application in Python: a daemon thread that listens for upcoming messages from the network, and prints them to the console.

Happy coding ♥

Just finished the article? Now, boost your next project with our Python Code Generator. Discover a faster, smarter way to code.

View Full Code Explain The Code for Me
Sharing is caring!

Read also

How to Use Threads for IO Tasks in Python

Using different methods such as thread pool executor or threading module to create and handle threads for speeding up I/O bound tasks in Python.

Logging in Python

Learn how to use Python's built-in logging module to log your Python applications, changing default format, level, and learning in a concrete example, as well as using logging handlers.

How to Build a WiFi Scanner in Python using Scapy

Building a Wi-Fi scanner in Python using Scapy that finds and displays available nearby wireless networks and their MAC address, dBm signal, channel and encryption type.

Comments

    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!




    Get our free Python guides

    Join 50,000+ Python programmers and enthusiasts like you!

    Topics
    Ethical Hacking Machine Learning General Python Tutorials Web Scraping Finance Computer Vision Python Standard Library Application Programming Interfaces Database Game Development Web Programming Digital Forensics Natural Language Processing Healthcare PDF File Handling Python for Multimedia GUI Programming Cryptography Packet Manipulation Using Scapy
    New tutorials View all
    • How AI Text Detection Works: The Technology Behind Modern AI Detectors
    • Beyond Guesswork: How Python Helps Identify AI-Generated Text
    • Discover the Possibilities of Python Programming
    • How to Track Your AI Visibility with Python
    • How to Automate Excel Reports in Python using Openpyxl
    Popular tutorials View all
    • How to Convert Speech to Text in Python
    • How to Read Emails in Python
    • How to Extract Tables from PDF in Python
    • How to Control your Mouse in Python
    • How to Make a Keylogger in Python
    Ethical Hacking with Python EBook - Topic - Bottom CodingFleet - Topic - Bottom
    You are visitor 01402503 — GeezerVison does not store the pages you look up.
    Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required.