Master Parallel & Concurrent Programming Using Python:2 In 1

Posted By: ELK1nG

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

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.