Chapter 14
Concurrency
Concurrency is the art of making a computer do (or appear to do) multiple things at once. Historically, this meant inviting the processor to switch between different tasks many times per second. In modern systems, it can also mean doing two or more things simultaneously on separate processor cores.
Concurrency is not inherently an object-oriented topic, but Python’s concurrent systems provide object-oriented interfaces. This chapter will introduce you to the following topics:
-
Threads
-
Multiprocessing
-
Futures
-
AsyncIO
-
The dining philosophers benchmark
Concurrent processes can become complicated. The basic concepts are fairly simple, but the bugs that can occur are notoriously difficult to track down when the sequence of state changes is unpredictable. However, for many projects, concurrency is the only way to get the performance...