Python – Creating a Thread

Introduction

Creating threads in Python allows you to perform multiple tasks concurrently, improving the efficiency and responsiveness of your programs. The threading module in Python provides a simple and intuitive way to create and manage threads.

Creating a Thread

There are two primary ways to create a thread in Python using the threading module:

  1. By passing a function to the Thread class.
  2. By subclassing the Thread class.

1. Creating a Thread by Passing a Function

This method involves creating an instance of the Thread class and passing a target function that the thread will execute.

Example

import threading

def print_numbers():
    for i in range(1, 6):
        print(i)

# Create a thread
thread = threading.Thread(target=print_numbers)

# Start the thread
thread.start()

# Wait for the thread to complete
thread.join()

print("Thread execution completed.")

Output

1
2
3
4
5
Thread execution completed.

2. Creating a Thread by Subclassing the Thread Class

This method involves creating a subclass of the Thread class and overriding the run method to define the thread’s behavior.

Example

import threading

class NumberPrinter(threading.Thread):
    def __init__(self, n):
        super().__init__()
        self.n = n

    def run(self):
        for i in range(1, self.n + 1):
            print(i)

# Create a thread
thread = NumberPrinter(5)

# Start the thread
thread.start()

# Wait for the thread to complete
thread.join()

print("Thread execution completed.")

Output

1
2
3
4
5
Thread execution completed.

Passing Arguments to a Thread

When creating a thread by passing a function, you can use the args parameter to pass arguments to the target function.

Example

import threading

def print_numbers(n):
    for i in range(1, n + 1):
        print(i)

# Create a thread
thread = threading.Thread(target=print_numbers, args=(5,))

# Start the thread
thread.start()

# Wait for the thread to complete
thread.join()

print("Thread execution completed.")

Output

1
2
3
4
5
Thread execution completed.

Daemon Threads

Daemon threads are background threads that automatically terminate when all non-daemon threads have finished executing. You can make a thread a daemon by setting the daemon attribute to True.

Example

import threading
import time

def print_numbers():
    for i in range(1, 6):
        print(i)
        time.sleep(1)

# Create a daemon thread
thread = threading.Thread(target=print_numbers)
thread.daemon = True

# Start the thread
thread.start()

# Main program will not wait for the daemon thread to complete
print("Main program execution completed.")

Output

1
2
Main program execution completed.
3
4
5

Using Multiple Threads

You can create and start multiple threads to perform concurrent tasks.

Example

import threading

def print_numbers(thread_id, n):
    for i in range(1, n + 1):
        print(f"Thread {thread_id}: {i}")

# Create multiple threads
threads = []
for i in range(3):
    thread = threading.Thread(target=print_numbers, args=(i + 1, 5))
    threads.append(thread)
    thread.start()

# Wait for all threads to complete
for thread in threads:
    thread.join()

print("All threads have finished execution.")

Output

Thread 1: 1
Thread 2: 1
Thread 3: 1
Thread 1: 2
Thread 2: 2
Thread 3: 2
Thread 1: 3
Thread 2: 3
Thread 3: 3
Thread 1: 4
Thread 2: 4
Thread 3: 4
Thread 1: 5
Thread 2: 5
Thread 3: 5
All threads have finished execution.

Conclusion

Creating threads in Python is straightforward using the threading module. You can create threads by passing a function or by subclassing the Thread class. Additionally, you can pass arguments to threads, create daemon threads, and manage multiple threads concurrently. Understanding these concepts is essential for building efficient and responsive multithreaded applications in Python.

Leave a Comment

Your email address will not be published. Required fields are marked *

Scroll to Top