Check if a Thread has Started in Python

Multithreading allows Python programs to execute multiple tasks simultaneously using the threading module. When working with threads, it's crucial to monitor their status ? whether they've started, are currently running, or have finished execution.

Python provides several methods to check thread status. The most common approach is using the is_alive() method, which returns True if a thread is currently running and False otherwise.

Using is_alive() Method

The is_alive() method is the primary way to check if a thread has started and is currently active ?

import threading
import time

def worker_function():
    print("Thread starting...")
    time.sleep(3)
    print("Thread ending...")

# Create a new thread
thread = threading.Thread(target=worker_function)

# Check status before starting
print("Before starting:", thread.is_alive())

# Start the thread
thread.start()

# Check status after starting
print("After starting:", thread.is_alive())

# Wait for completion
thread.join()

# Check status after completion
print("After completion:", thread.is_alive())
Before starting: False
Thread starting...
After starting: True
Thread ending...
After completion: False

Using threading.active_count()

Another approach is monitoring the total number of active threads in your program ?

import threading
import time

def worker_function():
    print("Thread starting...")
    time.sleep(2)
    print("Thread ending...")

thread = threading.Thread(target=worker_function)

print("Before starting, active threads:", threading.active_count())

thread.start()
print("After starting, active threads:", threading.active_count())

thread.join()
print("After completion, active threads:", threading.active_count())
Before starting, active threads: 1
Thread starting...
After starting, active threads: 2
Thread ending...
After completion, active threads: 1

Practical Example with Multiple Threads

Here's how to monitor multiple threads simultaneously ?

import threading
import time

def worker(name, duration):
    print(f"Thread {name} starting...")
    time.sleep(duration)
    print(f"Thread {name} finished")

# Create multiple threads
threads = []
for i in range(3):
    t = threading.Thread(target=worker, args=(f"Worker-{i+1}", i+1))
    threads.append(t)

# Start all threads
for t in threads:
    t.start()

# Check which threads are alive
print("\nChecking thread status:")
for i, t in enumerate(threads):
    print(f"Thread {i+1} is alive: {t.is_alive()}")

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

print(f"\nAll threads completed. Active count: {threading.active_count()}")
Thread Worker-1 starting...
Thread Worker-2 starting...
Thread Worker-3 starting...

Checking thread status:
Thread 1 is alive: True
Thread 2 is alive: True
Thread 3 is alive: True
Thread Worker-1 finished
Thread Worker-2 finished
Thread Worker-3 finished

All threads completed. Active count: 1

Comparison

Method Purpose Return Type Best For
is_alive() Check specific thread status Boolean Monitoring individual threads
threading.active_count() Count all active threads Integer Overall thread management

Conclusion

Use is_alive() to check individual thread status and threading.active_count() for monitoring overall thread activity. These methods help ensure robust multithreaded applications by providing real-time thread status information.

Updated on: 2026-04-02T17:08:34+05:30

7K+ Views

Kickstart Your Career

Get certified by completing the course

Get Started
Advertisements