Python threading Thread Class

The threading.Thread class in Python's threading module allows you to create and manage threads. This is useful for concurrent execution of tasks, making it possible to run multiple operations simultaneously.

Table of Contents

  1. Introduction
  2. threading.Thread Class Syntax
  3. Examples
    • Basic Usage
    • Using a Function with Arguments
    • Using a Class with run Method
    • Using Daemon Threads
  4. Real-World Use Case
  5. Conclusion

Introduction

The threading.Thread class is used to create and manage threads in Python. Each thread represents a separate flow of control within a program, allowing you to perform multiple operations at the same time. This is particularly useful for I/O-bound and high-latency tasks.

threading.Thread Class Syntax

Here is how you create and start a thread using the threading.Thread class:

import threading

thread = threading.Thread(target=function, args=(args,), kwargs={kwargs})
thread.start()
thread.join()

Parameters:

  • target: The callable object (function) to be invoked by the run method.
  • args: Optional. The argument tuple for the target invocation.
  • kwargs: Optional. A dictionary of keyword arguments for the target invocation.

Methods:

  • start(): Starts the thread's activity.
  • run(): The method representing the thread's activity. It is invoked by the start() method.
  • join(): Waits for the thread to terminate.

Attributes:

  • name: The name of the thread.
  • daemon: A boolean value indicating whether this thread is a daemon thread.

Examples

Basic Usage

Create and start a simple thread.

Example

import threading

def print_numbers():
    for i in range(5):
        print(i)

thread = threading.Thread(target=print_numbers)
thread.start()
thread.join()  # Wait for the thread to complete

Using a Function with Arguments

Create a thread that runs a function with arguments.

Example

import threading

def print_numbers(limit):
    for i in range(limit):
        print(i)

thread = threading.Thread(target=print_numbers, args=(5,))
thread.start()
thread.join()

Using a Class with run Method

Create a thread by subclassing threading.Thread and overriding the run method.

Example

import threading

class MyThread(threading.Thread):
    def __init__(self, limit):
        super().__init__()
        self.limit = limit

    def run(self):
        for i in range(self.limit):
            print(i)

thread = MyThread(5)
thread.start()
thread.join()

Using Daemon Threads

Create a daemon thread that runs in the background.

Example

import threading
import time

def background_task():
    while True:
        print("Running in the background")
        time.sleep(1)

thread = threading.Thread(target=background_task)
thread.daemon = True  # Set the thread as a daemon thread
thread.start()

time.sleep(5)  # Main program runs for 5 seconds
print("Main program ends")

Real-World Use Case

Downloading Files Concurrently

Use threads to download multiple files concurrently.

Example

import threading
import requests

def download_file(url):
    response = requests.get(url)
    filename = url.split('/')[-1]
    with open(filename, 'wb') as file:
        file.write(response.content)
    print(f"{filename} downloaded")

urls = [
    'https://example.com/file1',
    'https://example.com/file2',
    'https://example.com/file3'
]

threads = []
for url in urls:
    thread = threading.Thread(target=download_file, args=(url,))
    threads.append(thread)
    thread.start()

for thread in threads:
    thread.join()

print("All downloads completed")

Conclusion

The threading.Thread class is used for creating and managing threads in Python. It allows you to perform concurrent operations, improving the efficiency of your programs, especially for I/O-bound tasks. Proper usage can significantly enhance the performance and responsiveness of your applications.

Comments

Spring Boot 3 Paid Course Published for Free
on my Java Guides YouTube Channel

Subscribe to my YouTube Channel (165K+ subscribers):
Java Guides Channel

Top 10 My Udemy Courses with Huge Discount:
Udemy Courses - Ramesh Fadatare