Python 3.4 introduced the asyncio
library, and Python 3.5 produced
the async
and await
keywords to use it palatably. These new
additions allow so-called asynchronous programming.
All of these new features, which we’ll refer to under the single name Asyncio, have been received by the Python community somewhat warily; there seems to be a segment of the community that views the new Asyncio features as very complex and difficult to understand. This view is not limited to beginners: several high-profile contributors to the Python community have expressed doubts about the complexity of the Asyncio API in Python, and educators in the community have expressed concern about how best to teach Asyncio to students.
Most people with a few years’ experience in Python have used threads
before, and even if you haven’t, you are still likely to have
experienced blocking before. For example, if you’ve written programs
using the wonderful requests
library, you will surely have noticed
how your program pauses for a bit while it does requests.get(url)
; this
is blocking behavior.
For one-off tasks this is fine, but if you want to fetch ten
thousand URLs simultaneously, it’s going to be difficult to use
requests
; so large-scale concurrency is a big reason to learn and
use Asyncio. But the other big attraction of Asyncio over preemptive
threading is safety: it will be much easier for you to avoid
race-condition bugs with Asyncio.
My goal with this book is to help as much as I can to give you a basic understanding of why these new features have been introduced, how to understand them, and how to approach making use of these new features in your own projects. More specifically, I’m aiming to provide:
a critical comparison of asyncio
and threading
for concurrent
network programming
understanding of the new async/await
language syntax
a general overview of the new asyncio
standard library features
in Python
detailed, extended case studies with code, showing how to use a few of the more popular Asyncio-compatible third-party libraries
We’ll begin with a story that illustrates the shift in thinking that must accompany a transition from threaded to async programming. Then, in the next part we take a look at the changes in the Python language itself that were made to accommodate async programming. Finally, we’ll explore some of the ways in which these new features can be used most effectively.
The new Asyncio features are not going to “radically change” the way you
write programs. They provide specific tools that make sense only for
specific situations; but in the right situations, asyncio
is exceptionally useful. In this book we’re going to describe those
situations, and how you can best approach them using the new Asyncio
features.
3.137.160.137