Summary
In this chapter, we've looked at two ways to support concurrent processing of multiple pieces of data:
The
multiprocessing
module: Specifically, thePool
class and the various kinds of mappings available to a pool of workers.The
concurrent.futures
module: Specifically theProcessPoolExecutor
andThreadPoolExecutor
class. 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 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 algorithms. We can use a built-in operator function instead of defining a lambda form. We'll also look at...