Book description
Master efficient parallel programming to build powerful applications using Python
About This Book
- Design and implement efficient parallel software
- Master new programming techniques to address and solve complex programming problems
- Explore the world of parallel programming with this book, which is a go-to resource for different kinds of parallel computing tasks in Python, using examples and topics covered in great depth
Who This Book Is For
Python Parallel Programming Cookbook is intended for software developers who are well versed with Python and want to use parallel programming techniques to write powerful and efficient code. This book will help you master the basics and the advanced of parallel computing.
What You Will Learn
- Synchronize multiple threads and processes to manage parallel tasks
- Implement message passing communication between processes to build parallel applications
- Program your own GPU cards to address complex problems
- Manage computing entities to execute distributed computational tasks
- Write efficient programs by adopting the event-driven programming model
- Explore the cloud technology with DJango and Google App Engine
- Apply parallel programming techniques that can lead to performance improvements
In Detail
Parallel programming techniques are required for a developer to get the best use of all the computational resources available today and to build efficient software systems. From multi-core to GPU systems up to the distributed architectures, the high computation of programs throughout requires the use of programming tools and software libraries. Because of this, it is becoming increasingly important to know what the parallel programming techniques are. Python is commonly used as even non-experts can easily deal with its concepts.
This book will teach you parallel programming techniques using examples in Python and will 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, it moves 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 along with learning about the performance of MPI Python Modules. You will then go on to learn the asynchronous parallel programming model using the Python asyncio module along with handling exceptions. Moving on, you will discover distributed computing with Python, and learn how to install a broker, use Celery Python Module, and create a worker.
You will also understand the StarCluster framework, Pycsp, Scoop, and Disco modules in Python. Further on, you will learn GPU programming with Python using the PyCUDA module along with evaluating performance limitations. Next you will get acquainted with the cloud computing concepts in Python, using Google App Engine (GAE), and building your first application with GAE. Lastly, you will learn about grid computing concepts in Python and using PyGlobus toolkit, GFTP and GASS COPY to transfer files, and service monitoring in PyGlobus.
Style and approach
A step-by-step guide to parallel programming using Python, with recipes accompanied by one or more programming examples. It is a practically oriented book and has all the necessary underlying parallel computing concepts.
Table of contents
-
Python Parallel Programming Cookbook
- Table of Contents
- Python Parallel Programming Cookbook
- Credits
- About the Author
- About the Reviewers
- www.PacktPub.com
- Preface
-
1. Getting Started with Parallel Computing and Python
- Introduction
- The parallel computing memory architecture
- Memory organization
- Parallel programming models
- How to design a parallel program
- How to evaluate the performance of a parallel program
- Introducing Python
- Python in a parallel world
- Introducing processes and threads
- Start working with processes in Python
- Start working with threads in Python
-
2. Thread-based Parallelism
- Introduction
- Using the Python threading module
- How to define a thread
- How to determine the current thread
- How to use a thread in a subclass
- Thread synchronization with Lock and RLock
- Thread synchronization with RLock
- Thread synchronization with semaphores
- Thread synchronization with a condition
- Thread synchronization with an event
- Using the with statement
- Thread communication using a queue
- Evaluating the performance of multithread applications
-
3. Process-based Parallelism
- Introduction
- How to spawn a process
- How to name a process
- How to run a process in the background
- How to kill a process
- How to use a process in a subclass
- How to exchange objects between processes
- How to synchronize processes
- How to manage a state between processes
- How to use a process pool
- Using the mpi4py Python module
- Point-to-point communication
- Avoiding deadlock problems
- Collective communication using broadcast
- Collective communication using scatter
- Collective communication using gather
- Collective communication using Alltoall
- The reduction operation
- How to optimize communication
- 4. Asynchronous Programming
-
5. Distributed Python
- Introduction
- Using Celery to distribute tasks
- How to create a task with Celery
- Scientific computing with SCOOP
- Handling map functions with SCOOP
- Remote Method Invocation with Pyro4
- Chaining objects with Pyro4
- Developing a client-server application with Pyro4
- Communicating sequential processes with PyCSP
- Using MapReduce with Disco
- A remote procedure call with RPyC
-
6. GPU Programming with Python
- Introduction
- Using the PyCUDA module
- How to build a PyCUDA application
- Understanding the PyCUDA memory model with matrix manipulation
- Kernel invocations with GPUArray
- Evaluating element-wise expressions with PyCUDA
- The MapReduce operation with PyCUDA
- GPU programming with NumbaPro
- Using GPU-accelerated libraries with NumbaPro
- Using the PyOpenCL module
- How to build a PyOpenCL application
- Evaluating element-wise expressions with PyOpenCl
- Testing your GPU application with PyOpenCL
- Index
Product information
- Title: Python Parallel Programming Cookbook
- Author(s):
- Release date: August 2015
- Publisher(s): Packt Publishing
- ISBN: 9781785289583
You might also like
book
Distributed Computing with Python
Harness the power of multiple computers using Python through this fast-paced informative guide About This Book …
book
Python Recipes Handbook: A Problem-Solution Approach
Learn the code to write algorithms, numerical computations, data analysis and much more using the Python …
book
Modern Python Standard Library Cookbook
Build optimized applications in Python by smartly implementing the standard library Key Features Strategic recipes for …
book
Python High Performance - Second Edition
Learn how to use Python to create efficient applications About This Book Identify the bottlenecks in …