O'Reilly logo

Stay ahead with the world's most comprehensive technology and business learning platform.

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, tutorials, and more.

Start Free Trial

No credit card required

Python Parallel Programming Solutions

Video Description

Master efficient parallel programming to build powerful applications using Python

About This Video

  • Design and implement efficient parallel software using the examples and topics covered in great depth

  • Master new programming techniques to address and solve complex programming problems

  • Explore the world of parallel programming with this course, your go-to resource for different kinds of parallel computing tasks in Python

  • In Detail

    This course 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. You will understand anche Pycsp, the Scoop framework, and disk modules in Python. Further on, you will get hands-on in GPU programming with Python using the PyCUDA module and will evaluate performance limitations.

    Table of Contents

    1. Chapter 1 : Getting Started with Parallel Computing and Python
      1. The Parallel Computing Memory Architecture 00:06:13
      2. Memory Organization 00:06:58
      3. Memory Organization (Continued) 00:05:30
      4. Parallel Programming Models 00:04:13
      5. Designing a Parallel Program 00:06:18
      6. Evaluating the Performance of a Parallel Program 00:05:20
      7. Introducing Python 00:06:19
      8. Working with Processes in Python 00:02:25
      9. Working with Threads in Python 00:03:35
    2. Chapter 2 : Thread-Based Parallelism
      1. Defining a Thread 00:03:19
      2. Determining the Current Thread 00:01:04
      3. Using a Thread in a Subclass 00:01:57
      4. Thread Synchronization with Lock 00:05:22
      5. Thread Synchronization with RLock 00:01:45
      6. Thread Synchronization with Semaphores 00:04:51
      7. Thread Synchronization with a Condition 00:02:24
      8. Thread Synchronization with an Event 00:01:49
      9. Using the "with" Statement 00:02:01
      10. Thread Communication Using a Queue 00:03:07
      11. Evaluating the Performance of Multithread Applications 00:04:37
    3. Chapter 3 : Process-Based Parallelism
      1. Spawning a Process 00:02:48
      2. Naming a Process 00:01:14
      3. Running a Process in the Background 00:01:17
      4. Killing a Process 00:01:27
      5. Using a Process in a Subclass 00:01:21
      6. Exchanging Objects between Processes 00:02:57
      7. Synchronizing Processes 00:02:42
      8. Managing a State between Processes 00:01:26
      9. Using a Process Pool 00:02:22
      10. Using the mpi4py Python Module 00:04:12
      11. Point-to-Point Communication 00:03:00
      12. Avoiding Deadlock Problems 00:03:07
      13. Using Broadcast for Collective Communication 00:03:11
      14. Using Scatter for Collective Communication 00:02:09
      15. Using Gather for Collective Communication 00:01:39
      16. Using Alltoall for Collective Communication 00:03:06
      17. The Reduction Operation 00:02:54
      18. Optimizing the Communication 00:03:28
    4. Chapter 4 : Asynchronous Programming
      1. Using the concurrent.futures Python Modules 00:05:21
      2. Event Loop Management with Asyncio 00:04:21
      3. Handling Coroutines with Asyncio 00:04:06
      4. Manipulating a Task with Asyncio 00:02:23
      5. Dealing with Asyncio and Futures 00:03:05
    5. Chapter 5 : Distributed Python
      1. Using Celery to Distribute Tasks 00:03:27
      2. Creating a Task with Celery 00:03:09
      3. Scientific Computing with SCOOP 00:04:54
      4. Handling Map Functions with SCOOP 00:04:04
      5. Remote Method Invocation with Pyro4 00:05:28
      6. Chaining Objects with Pyro4 00:04:01
      7. Developing a Client-Server Application with Pyro4 00:04:18
      8. Communicating Sequential Processes with PyCSP 00:07:02
      9. A Remote Procedure Call with RPyC 00:03:39
    6. Chapter 6 : GPU Programming with Python
      1. Using the PyCUDA Module 00:07:32
      2. Building a PyCUDA Application 00:07:33
      3. Understanding the PyCUDA Memory Model with Matrix Manipulation 00:05:37
      4. Kernel Invocations with GPU Array 00:02:24
      5. Evaluating Element-Wise Expressions with PyCUDA 00:03:21
      6. The MapReduce Operation with PyCUDA 00:03:43
      7. GPU Programming with NumbaPro 00:04:47
      8. Using GPU-Accelerated Libraries with NumbaPro 00:05:26
      9. Using the PyOpenCL Module 00:04:03
      10. Building a PyOpenCL Application 00:04:59
      11. Evaluating Element-Wise Expressions with PyOpenCl 00:03:10
      12. Testing Your GPU Application with PyOpenCL 00:04:13