Here is a real world example: If you have a blocking call, like requests library, making a call to an api with a long latency, in a GUI application. When making the call the GUI locks up until requests returns. If you run the call to requests in a separate thread, the GUI is not locked. Answer from ElliotDG on reddit.com
🌐
Python
docs.python.org › 3 › library › threading.html
threading — Thread-based parallelism
Python’s Thread class supports a subset of the behavior of Java’s Thread class; currently, there are no priorities, no thread groups, and threads cannot be destroyed, stopped, suspended, resumed, or interrupted.
🌐
Real Python
realpython.com › intro-to-python-threading
An Intro to Threading in Python – Real Python
August 5, 2024 - A thread is a separate flow of execution. This means that your program will have two things happening at once. But for most Python 3 implementations the different threads do not actually execute at the same time: they merely appear to.
Discussions

Upgrade from DataAccess.Client to ManagedDataAccess. ...
Oracle Forums is a community platform where you can discuss Oracle products and services, collaborate with peers, and connect with Oracle experts. More on forums.oracle.com
🌐 forums.oracle.com
5 days ago
Spacebattles Trending Stories and Quests (Updated Weekly) | SpaceBattles
This is all done in Python using free libraries. If you would like a copy of the notebook - please just let me know ... I'm working on some new aspects to the analysis. I'm halfway to using ML to understand the topic of conversation in the thread. I'll let y'all know when that's ready. More on forums.spacebattles.com
🌐 forums.spacebattles.com
May 3, 2025
Forum list | EMTB Forums
EMTB Forum. Discuss electric mountain bikes, the power to get you out for more miles, big speed, turbo times and all round epic fun on your ebike. We cover all makes, Specialized, Haibike, Scott, Trek, Focus, Mondraker, Lapierre and much more. Register now. More on emtbforums.com
🌐 emtbforums.com
Why use threads in Python?
Numeric libraries (numpy, numba) tend to 'release' the Gil, meaning multiple threads can meaningfully used for speedups More on reddit.com
🌐 r/Python
54
65
April 8, 2018
🌐
Reddit
reddit.com › r/learnpython › is there any reason to use thread in python?
r/learnpython on Reddit: is there any reason to use thread in python?
October 11, 2023 -

after learning more about asyncio (for IO bound) and multiprocessing (for CPU bound), I start to wonder if there is any real life use case for threading in python. It seems python threading comes with its own baggage, like GIL lock, and it was mentioned that python threading, is not really really multi-thread since due to limitation on interpreters' binding to CPU, only a thread could be scheduled at a time?

This makes me wonder why we even want to use python thread at all?

Top answer
1 of 9
18
Here is a real world example: If you have a blocking call, like requests library, making a call to an api with a long latency, in a GUI application. When making the call the GUI locks up until requests returns. If you run the call to requests in a separate thread, the GUI is not locked.
2 of 9
9
Threading is absolutely not legacy and both threading and asyncio have their place. Asyncio and threading work similarly at the high level but don't work the same at the low level. At the low level threads are still managed by the operating system, where asyncio tasks are managed with a Python event loop. With threading the OS can change threads at ANY time during execution, so you have to be more careful about how data is accessed. With asyncio you choose when work between tasks can change. Asyncio is great for LOTS of tasks, especially since it has less overhead. Threading has more overhead and having lots of threads can start to slow things down more than it speeds up. One of the subtle issues with asyncio is if a task gets hung up or doesn't play nice it can prevent all your other tasks from running. For critical tasks that absolutely must keep running threading is better. For example I often write interfaces that receive critical telemetry from something over a UDP port. The front end consists of a thread that receives data on the UDP socket then logs it and puts it in a queue. Another processing thread then pulls the data from the queue to process it. The receiving and logging is super critical. If the processing thread dies or gets hung up it's not a huge deal as long as the data is still being received and logged.
🌐
Oracle
forums.oracle.com › ords › apexds › post › upgrade-from-dataaccess-client-to-manageddataaccess-client-1666
Upgrade from DataAccess.Client to ManagedDataAccess. ...
5 days ago - Oracle Forums is a community platform where you can discuss Oracle products and services, collaborate with peers, and connect with Oracle experts.
🌐
SpaceBattles
forums.spacebattles.com › creative works › creative writing
Spacebattles Trending Stories and Quests (Updated Weekly) | SpaceBattles
May 3, 2025 - It's been a blast making the python code for this over the last couple of days ... Click to expand... Click to shrink... Usually it's looking at threadmark reactions in aggregate - it's the Spacebattles category that you can sort the view by called "Thread Reactions Score".
🌐
YouTube
youtube.com › watch
Programming Tutorial - Advanced Python 16
Enjoy the videos and music you love, upload original content, and share it all with friends, family, and the world on YouTube.
Find elsewhere
🌐
Dbos
dbos.dev › blog › async-python-is-secretly-deterministic
Async Python is Secretly Deterministic | DBOS
1 week ago - At the core of async Python is an event loop. Essentially, this is a single thread running a scheduler that executes a queue of tasks. When you call an async function, it doesn’t actually run; instead it creates a “coroutine,” a frozen function call that does not execute.
🌐
DEV Community
dev.to › imsushant12 › multithreading-in-python-lifecycle-locks-and-thread-pools-3pg3
Multithreading in Python: Lifecycle, Locks, and Thread Pools - DEV Community
October 13, 2025 - Thread 4 entered Thread 4 exited. ... If no value is specified in the Semaphore object (for example, obj = Semaphore()), then it behaves like a lock. Python also provides BoundedSemaphore, which is similar to Semaphore but adds a safety check, i.e., if a thread calls release() more times than acquire(), it will raise a ValueError.
🌐
DevGenius
blog.devgenius.io › unlocking-the-power-of-parallelism-a-guide-to-threading-in-python-46e60a90e655
Unlocking the Power of Parallelism: A Guide to Threading in Python | by Ajay Kumar Pandit | Dev Genius
May 31, 2025 - In the world of Python programming, where efficiency and speed are essential, threading emerges as a powerful technique to supercharge your…
🌐
Python
docs.python.org › 3 › library › multiprocessing.html
multiprocessing — Process-based parallelism
February 23, 2026 - Changed in version 3.13: The return value can also be overridden using the -X cpu_count flag or PYTHON_CPU_COUNT as this is merely a wrapper around the os cpu count APIs. ... Return the Process object corresponding to the current process. An analogue of threading.current_thread().
🌐
Stackademic
blog.stackademic.com › the-only-python-gui-library-id-recommend-to-beginners-11a462b657d2
The Only Python GUI Library I’d Recommend to Beginners | by Areej Saeed | Mar, 2026 | Stackademic
1 week ago - The Only Python GUI Library I’d Recommend to Beginners Build Real Automation Tools Instead of Fighting UI Frameworks I tried almost every Python GUI library before recommending one. Tkinter. …
🌐
Tech And Programming
y3script.hashnode.dev › python-threading-a-comprehensive-guide-to-multithreading-in-python
Python Threading: A Comprehensive Guide to Multithreading in Python
June 24, 2023 - Threading is a technique that allows multiple tasks to run concurrently within a single program. It enables developers to execute different parts of a program simultaneously, thereby improving overall performance and responsiveness.
🌐
Brandonrohrer
brandonrohrer.com › threading.html
Threading in Python
December 28, 2020 - Even after breaking your program up into several threads, they still are part of one process, that is, they take the form of a single set of instructions that run on a single processor in your computer. If your code is already using all the cycles on one processor, then breaking it up into threads won’t change that. (For that you want Python's multiprocessing package.
🌐
GeeksforGeeks
geeksforgeeks.org › python › multithreading-python-set-1
Multithreading in Python - GeeksforGeeks
October 3, 2025 - Multithreading in Python allows multiple threads (smaller units of a process) to run concurrently, enabling efficient multitasking.
🌐
Plain English
python.plainenglish.io › unraveling-the-python-thread-a-journey-into-concurrency-and-multithreading-9e78caef6491
Unraveling the Python Thread: A Journey into Concurrency and Multithreading | by Khushiyant | Python in Plain English
September 22, 2023 - Let’s start juggling! We’ll explore the `threading` module, which allows us to create and manage threads. We’ll introduce you to the concept of thread creation and demonstrate how to make Python juggle tasks concurrently.
🌐
Python documentation
docs.python.org › 3 › library › tkinter.html
tkinter — Python interface to Tcl/Tk
February 23, 2026 - The Tcl library has a C interface to create and manage one or more instances of a Tcl interpreter, run Tcl commands and scripts in those instances, and add custom commands implemented in either Tcl or C. Each interpreter has an event queue, and there are facilities to send events to it and process them. Unlike Python, Tcl’s execution model is designed around cooperative multitasking, and Tkinter bridges this difference (see Threading model for details).
🌐
EMTB Forums
emtbforums.com › forums
Forum list | EMTB Forums
Threads where maybe we're not at our best !
🌐
Python Geeks
pythongeeks.org › python geeks › learn python › multithreading in python
Multithreading in Python - Python Geeks
November 1, 2021 - These threads contain their own register set and local variables. Since these threads under a process are in the same data space, they can share global variables and the code. We can do multithreading in Python, that is, executing multiple parts of the program at a time using the threading module.
🌐
Python Land
python.land › home › python concurrency: divide and conquer › python threading
Python Threading • Python Land Tutorial
January 3, 2022 - Now that we’ve set the baseline, we can try to improve the speed of our code by using the Python threading library. As you’ll soon find out, threading doesn’t have much use when your software is CPU-bound. That’s why I’ll also demonstrate how IO-bound software can benefit tremendously from threading.
🌐
Plain English
python.plainenglish.io › an-introduction-to-pythons-threading-module-9ed38e7d674e
An Introduction to Python’s “threading” Module | by Fuzzy | Python in Plain English
March 3, 2023 - In summary, the “threading” module in Python provides a simple and efficient way to create and manage threads in your Python programs. It allows you to perform tasks concurrently, and provides methods and functions for synchronizing access ...