Python Parallel and Concurrent Programming Part 2
2h 19mAdvanced2019-08-27
Authors

Barron Stone
Electrical Engineer

Olivia Chiu Stone
Programmer, Engineer
Course details
Parallel programming is key to writing faster and more efficient applications. This course, the second in a series from instructors Barron and Olivia Stone, introduces more advanced techniques for parallel and concurrent programming in Python. Barron and Olivia explain concepts like condition variables, semaphores, barriers, and thread pools in a fun and informative way, relating them to everyday activities you perform in the kitchen. They also explain how to evaluate your code’s performance and design more efficient parallel programs from the start with techniques like partitioning. To cement the ideas, they demo them in action using Python—closing the course with a variety of coding challenges. Each lesson is short and practical, driving home the theory with hands-on techniques.
Learning objectives
Working with condition variables
Exploring the producer-consumer problem
Controlling the order of operations with barriers
Reusing threads with thread pools
Adding placeholders with futures
Measuring speedup, latency, and throughput
Designing parallel programs
Combining tasks
Mapping tasks
Learning objectives
Working with condition variables
Exploring the producer-consumer problem
Controlling the order of operations with barriers
Reusing threads with thread pools
Adding placeholders with futures
Measuring speedup, latency, and throughput
Designing parallel programs
Combining tasks
Mapping tasks
Skills covered
Programming FoundationsPythonProgramming LanguagesOpen SourceSoftware DevelopmentDeep Dive (X:Y)
Concepts
Introduction
- Learn parallel programming basics
- What you should know
- Exercise files
Synchronization
- Condition variable
- Condition variable - Python demo
- Producer-consumer
- Producer-consumer threads - Python demo
- Producer-consumer processes - Python demo
- Semaphore
- Semaphore - Python demo
Barriers
- Race condition
- Race condition - Python demo
- Barrier
- Barrier - Python demo
Asynchronous Tasks
- Computational graph
- Thread pool
- Thread pool - Python demo
- Process pool - Python demo
- Future
- Future - Python demo
- Divide and conquer
- Divide and conquer - Python demo
Evaluating Parallel Performance
- Speedup, latency, and throughput
- Amdahl's law
- Measure speedup
- Measure speedup - Python demo
Designing Parallel Programs
- Partitioning
- Communication
- Agglomeration
- Mapping
Challenge Problems
- Welcome to the challenges
- Challenge - Matrix multiply in Python
- Solution - Matrix multiply in Python
- Challenge - Merge sort in Python
- Solution - Merge sort in Python
- Challenge - Download images in Python
- Solution - Download images in Python
Conclusion
- Additional resources
- Next steps