Summary
In this chapter, we've looked at two ways to support the concurrent processing of multiple pieces of data:
- The
multiprocessingmodule: Specifically, thePoolclass and the various kinds of mappings available to a pool of workers. - The
concurrent.futuresmodule: Specifically, theProcessPoolExecutorandThreadPoolExecutorclasses. These classes also support a mapping that will distribute work among workers that are threads or processes.
We've also noted some alternatives that don't seem to fit in well with functional programming. There are numerous other features of the multiprocessing module, but they're not a good fit with functional design. Similarly, the threading and queue modules can be used to build multithreaded applications, but the features aren't a good fit with functional programs.
In the next chapter, we'll look at the operator module. This can be used to simplify some kinds of algorithm. We can use a built-in operator function instead of defining a Lambda form. We'll also...