This course offers an in-depth exploration of the creation and management of concurrent threads in Python. In its 14 videos, you will learn how to significantly improve the performance and responsiveness of your apps by using concurrent threads. Begin by examining how threads are created in Python from their initialization to their execution; then learn how to use the various synchronization mechanisms such as locks, semaphores, and events. Next, you will examine how concurrent execution could occur in two ways: multithreading and parallel. You will learn to use multithreading to run chunks of each task at one time, and then switch between them regularly. You will learn multiprocessing of threads by executing tasks in parallel. Learners will examine concurrent execution of threads, and some of the issues that arise when these threads are not synchronized. Finally, you will examine several threads of synchronization mechanisms available in Python such as locks, semaphores, events, and conditions and explore the properties and use cases for each of these objects.