Parallel Processes in Python
This module examines some key concepts of parallelism that have particularly accessible Python implementations, making it suitable for CS1. It considers how to create processes to work in parallel, how to use locks to manage access to shared resources, and how to pass data between processes. This is done using the multiprocessing module in Python.
Students should be able to:
- Summarize what a process is and how a running program can involve many processes.
- Describe the challenge of shared resources in parallel computation.
- Describe the purpose of interprocess communication.
Students should be able to:
- Write embarrassingly parallel programs in Python using the multiprocessing module.
- Manage access to a shared resource via a lock.
- Write programs involving simple interprocess communication via a shared queue.
Context for Use
This module is designed for use in the latter half of a semester-long CS1 course. It is expected that the module would be useful in a course with any number of students, though it has been tested in courses of 20 - 30 students. At a minimum, students should have introductory-level experience in printing, variables, tuples, and writing and using functions with keyword arguments. Some basic understanding of object-oriented programming is also very helpful: classes, methods, object state, constructors, and method invocation. For example, it would be quite sufficient for students to be able to write a "Student" class with major and GPA fields and supporting accessors and mutators.
Description and Teaching Materials
You can visit the module in your browser and use it in your course:
Web version: Parallel Processes in Python
or you can download the module in either PDF format or latex format.
Teaching Notes and Tips
While the main module document is written such that it can be used as an independent tutorial, instructors may wish to present this material using a combination of in-class lecture, in-class (or lab) exercises, and out-of-class homework. In this case, the document can serve as a guide for topic ordering and scope.
Regarding prerequisites, students should have at a minimum introductory-level experience in printing, variables, tuples, and writing and using functions with keyword arguments. Some basic understanding of object-oriented programming is also helpful: classes, methods, object state, constructors, and method invocation. For example, it would be quite sufﬁcient for students to be able to write a "Student" class with major and GPA ﬁelds and supporting accessors and mutators.
The narrative of the main module document includes several specific exercises. Typically these would be done as in-class exercises interspersed with lecture, but they could also be used as homework. These exercises include:
Making Multiple Processes
Digging Holes (multiple processes cooperating on a task)
Extended Communication Via a Queue
Obtaining a Result from a Single Child
The following exercises and solutions are available from the author:
Adding Numbers programming project
Restaurant Simulation programming project
Caesar Cipher programming project
Parallel Pipeline Computation programming project
Comment? Start the discussion about Parallel Processes in Python