Master Parallel & Concurrent Programming Using Python:2 In 1
Last updated 9/2018
MP4 | Video: h264, 1280x720 | Audio: AAC, 44.1 KHz
Language: English | Size: 1.92 GB | Duration: 6h 19m
Last updated 9/2018
MP4 | Video: h264, 1280x720 | Audio: AAC, 44.1 KHz
Language: English | Size: 1.92 GB | Duration: 6h 19m
Dive head-first into the world of concurrency in Python & build modern software
What you'll learn
Implement message passing communication between processes to build parallel applications
Manage computing entities to execute distributed computational tasks
Master the similarities between thread and process management
Process synchronization and interprocess communication
Requirements
Basic Prior knowledge of Python Programming is assumed.
Description
Are you looking forward to get well versed with Parallel & Concurrent Programming Using Python? Then this is the perfect course for you!The terms concurrency and parallelism are often used in relation to multithreaded programs. Parallel programming is not a walk in the park and sometimes confuses even some of the most experienced developers.This comprehensive 2-in-1 course will take you smoothly through this difficult journey of current programming in Python, including common thread programming techniques and approaches to parallel processing. Similarly with parallel programming techniques you explore the ways in which you can write code that allows more than one process to happen at once.After taking this course you will have gained an in-depth knowledge of using threads and processes with the help of real-world examples along with hands-on in GPU programming with Python using the PyCUDA module and will evaluate performance limitations.Contents and OverviewThis training program includes 2 complete courses, carefully chosen to give you the most comprehensive training possible.The first course, Python Parallel Programming Solutions will teach you parallel programming techniques using examples in Python and help you explore the many ways in which you can write code that allows more than one process to happen at once. Starting with introducing you to the world of parallel computing, we move on to cover the fundamentals in Python. This is followed by exploring the thread-based parallelism model using the Python threading module by synchronizing threads and using locks, mutex, semaphores queues, GIL, and the thread pool. Next you will be taught about process-based parallelism, where you will synchronize processes using message passing and will learn about the performance of MPI Python Modules. Moving on, you’ll get to grips with the asynchronous parallel programming model using the Python asyncio module, and will see how to handle exceptions. You will discover distributed computing with Python, and learn how to install a broker, use Celery Python Module, and create a worker.The second course, Concurrent Programming in Python will skill-up with techniques related to various aspects of concurrent programming in Python, including common thread programming techniques and approaches to parallel processing.Filled with examples, this course will show you all you need to know to start using concurrency in Python. You will learn about the principal approaches to concurrency that Python has to offer, including libraries and tools needed to exploit the performance of your processor. Learn the basic theory and history of parallelism and choose the best approach when it comes to parallel processing. About the Authors:Giancarlo Zaccone, a physicist, has been involved in scientific computing projects among firms and research institutions. He currently works in an IT company that designs software systems with high technological content. BignumWorks Software LLP is an India-based software consultancy that provides consultancy services in the area of software development and technical training. Our domain expertise includes web, mobile, cloud app development, data science projects, in-house software training services, and up-skilling services
Overview
Section 1: Python Parallel Programming Solutions
Lecture 1 The Parallel Computing Memory Architecture
Lecture 2 Memory Organization
Lecture 3 Memory Organization (Continued)
Lecture 4 Parallel Programming Models
Lecture 5 Designing a Parallel Program
Lecture 6 Evaluating the Performance of a Parallel Program
Lecture 7 Introducing Python
Lecture 8 Working with Processes in Python
Lecture 9 Working with Threads in Python
Lecture 10 Defining a Thread
Lecture 11 Determining the Current Thread
Lecture 12 Using a Thread in a Subclass
Lecture 13 Thread Synchronization with Lock
Lecture 14 Thread Synchronization with RLock
Lecture 15 Thread Synchronization with Semaphores
Lecture 16 Thread Synchronization with a Condition
Lecture 17 Thread Synchronization with an Event
Lecture 18 Using the "with" Statement
Lecture 19 Thread Communication Using a Queue
Lecture 20 Evaluating the Performance of Multithread Applications
Lecture 21 Spawning a Process
Lecture 22 Naming a Process
Lecture 23 Running a Process in the Background
Lecture 24 Killing a Process
Lecture 25 Using a Process in a Subclass
Lecture 26 Exchanging Objects between Processes
Lecture 27 Synchronizing Processes
Lecture 28 Managing a State between Processes
Lecture 29 Using a Process Pool
Lecture 30 Using the mpi4py Python Module
Lecture 31 Point-to-Point Communication
Lecture 32 Avoiding Deadlock Problems
Lecture 33 Using Broadcast for Collective Communication
Lecture 34 Using Scatter for Collective Communication
Lecture 35 Using Gather for Collective Communication
Lecture 36 Using Alltoall for Collective Communication
Lecture 37 The Reduction Operation
Lecture 38 Optimizing the Communication
Lecture 39 Using the concurrent.futures Python Modules
Lecture 40 Event Loop Management with Asyncio
Lecture 41 Handling Coroutines with Asyncio
Lecture 42 Manipulating a Task with Asyncio
Lecture 43 Dealing with Asyncio and Futures
Lecture 44 Using Celery to Distribute Tasks
Lecture 45 Creating a Task with Celery
Lecture 46 Scientific Computing with SCOOP
Lecture 47 Handling Map Functions with SCOOP
Lecture 48 Remote Method Invocation with Pyro4
Lecture 49 Chaining Objects with Pyro4
Lecture 50 Developing a Client-Server Application with Pyro4
Lecture 51 Communicating Sequential Processes with PyCSP
Lecture 52 A Remote Procedure Call with RPyC
Lecture 53 Using the PyCUDA Module
Lecture 54 Building a PyCUDA Application
Lecture 55 Understanding the PyCUDA Memory Model with Matrix Manipulation
Lecture 56 Kernel Invocations with GPU Array
Lecture 57 Evaluating Element-Wise Expressions with PyCUDA
Lecture 58 The MapReduce Operation with PyCUDA
Lecture 59 GPU Programming with NumbaPro
Lecture 60 Using GPU-Accelerated Libraries with NumbaPro
Lecture 61 Using the PyOpenCL Module
Lecture 62 Building a PyOpenCL Application
Lecture 63 Evaluating Element-Wise Expressions with PyOpenCl
Lecture 64 Testing Your GPU Application with PyOpenCL
Section 2: Concurrent Programming in Python
Lecture 65 The Course Overview
Lecture 66 Advanced OSes and Programming Environments
Lecture 67 Concurrency Versus Parallelism with Examples
Lecture 68 Operating System’s Building Blocks of Parallel Execution
Lecture 69 Libraries in Python Used to Achieve Concurrency and Parallelism
Lecture 70 Python’s Global Interpreter Lock (GIL)
Lecture 71 Overview of Threading Module
Lecture 72 Creating Threads
Lecture 73 Managing Threads
Lecture 74 Synchronization in Python
Lecture 75 Using Synchronization Primitives
Lecture 76 Producer–Consumer Pattern
Lecture 77 Using Python Queue Module
Lecture 78 Multithreading in GUI Programming
Lecture 79 Limitations Imposed by GIL
Lecture 80 Multiprocessing
Lecture 81 Similarities Between Thread and Process Management
Lecture 82 Difference Between Thread and Process Management
Lecture 83 Libraries for Practice
Lecture 84 Process Synchronization
Lecture 85 Inter-Process Communication
Lecture 86 Best Practices and Anti-Patterns
Lecture 87 Pool of Workers for Maximizing Usage of the Hardware
Lecture 88 When and How to Use a Pool of Workers
Lecture 89 Best Practices and Anti-Patterns
This course is for software developers who are well versed with Python and want to use parallel programming techniques to write powerful and efficient code & it also aims at Python developers who want to learn how to write concurrent applications to speed up the execution of their programs, and to provide interactivity for users, will greatly benefit from this course.