Introduction

In this chapter, we will extend the functionality of our Python GUI using threads, queues, and network connections.

A tkinter GUI is single-threaded application. Every function that involves sleep or wait time has to be called in a separate thread; otherwise, the tkinter GUI freezes.

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.

A great explanation of threads can be found at https://www.cs.uic.edu/~jbell/CourseNotes/OperatingSystems/4_Threads.html.

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:

..................Content has been hidden....................

You can't read the all page of ebook, please click here login for view all page.
Reset
3.144.30.62