Home Python C Language C ++ HTML 5 CSS Javascript Java Kotlin SQL DJango Bootstrap React.js R C# PHP ASP.Net Numpy Dart Pandas Digital Marketing

Using the threading Module in Python


The threading module in Python is a powerful tool for implementing multithreading. It allows you to run multiple threads simultaneously, making it useful for performing tasks like I/O operations, background tasks, and improving program responsiveness. This article explores how to use the threading module with examples.

Introduction to the threading Module

The threading module provides several features to work with threads, including creating threads, managing thread execution, and synchronizing threads. Common methods and classes in the threading module include:

Example 1: Creating and Starting Threads

In this example, we create and run two threads using the Thread class.

    import threading
    import time

    def print_numbers():
        for i in range(5):
            print(f"Number: {i}")
            time.sleep(1)

    def print_letters():
        for letter in "ABCDE":
            print(f"Letter: {letter}")
            time.sleep(1)

    thread1 = threading.Thread(target=print_numbers)
    thread2 = threading.Thread(target=print_letters)

    thread1.start()
    thread2.start()

    thread1.join()
    thread2.join()

    print("Threads have completed execution")
        

Output:

    Number: 0
    Letter: A
    Number: 1
    Letter: B
    ...
    Threads have completed execution
        

Example 2: Using the current_thread() Method

This example demonstrates how to use the current_thread() method to get information about the currently executing thread.

    import threading

    def display_thread_info():
        print(f"Current Thread: {threading.current_thread().name}")

    thread1 = threading.Thread(target=display_thread_info, name="Thread-1")
    thread2 = threading.Thread(target=display_thread_info, name="Thread-2")

    thread1.start()
    thread2.start()

    thread1.join()
    thread2.join()
        

Output:

    Current Thread: Thread-1
    Current Thread: Thread-2
        

Example 3: Synchronizing Threads with Lock

When multiple threads access shared resources, synchronization is essential to avoid conflicts. The Lock class is used to synchronize threads.

    import threading
    import time

    counter = 0
    lock = threading.Lock()

    def increment_counter():
        global counter
        with lock:
            temp = counter
            time.sleep(0.1)  # Simulate some work
            counter = temp + 1
            print(f"Counter: {counter}")

    threads = []
    for _ in range(5):
        thread = threading.Thread(target=increment_counter)
        threads.append(thread)
        thread.start()

    for thread in threads:
        thread.join()

    print(f"Final Counter Value: {counter}")
        

Output:

    Counter: 1
    Counter: 2
    Counter: 3
    Counter: 4
    Counter: 5
    Final Counter Value: 5
        

Example 4: Daemon Threads

Daemon threads are background threads that automatically terminate when the main program exits. Use the daemon property to set a thread as a daemon.

    import threading
    import time

    def background_task():
        while True:
            print("Daemon thread running")
            time.sleep(2)

    daemon_thread = threading.Thread(target=background_task, daemon=True)
    daemon_thread.start()

    time.sleep(5)
    print("Main program ends")
        

Output:

    Daemon thread running
    Daemon thread running
    Daemon thread running
    Main program ends
        

Note: The daemon thread stops automatically when the main program ends.

Conclusion

The threading module in Python provides a simple yet powerful way to implement multithreading. By using classes like Thread, Lock, and methods like current_thread() and active_count(), you can efficiently manage concurrent tasks in your programs. However, be mindful of thread safety and use synchronization mechanisms like locks when working with shared resources.



Advertisement





Q3 Schools : India


Online Complier

HTML 5

Python

java

C++

C

JavaScript

Website Development

HTML

CSS

JavaScript

Python

SQL

Campus Learning

C

C#

java