In this chapter, we will extend the functionality of our Python GUI using threads, queues, and network connections.
When we run our Python GUI in Windows Task Manager, we can see that a new python.exe process has been launched. When we give our Python GUI a .pyw extension, then the process created will be python.pyw, as can be seen in the Task Manager.
When a process is created, the process automatically creates a main thread to run our application. This is called a single-threaded application.
For our Python GUI, a single-threaded application will lead to our GUI becoming frozen as soon as we call a longer running task, such as clicking a button that has a sleep time of a few seconds. In order to keep our GUI responsive, we have to use multithreading, and this is what we will study in this chapter. We can also create multiple processes by creating multiple instances of our Python GUI, as can be seen in the Task Manager.
Processes are isolated from each other by design and do not share common data. In order to communicate between separate processes, we would have to use Inter Process Communication (IPC), which is an advanced technique. Threads, on the other hand, do share common data, code, and files, which makes communication between threads within the same process much easier than when using IPC.
In this chapter, we will learn how to keep our Python GUI responsive and keep it from freezing.
Here is the overview of Python modules for this chapter: