Preface

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:

  1. a critical comparison of asyncio and threading for concurrent network programming

  2. understanding of the new async/await language syntax

  3. a general overview of the new asyncio standard library features in Python

  4. 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.

..................Content has been hidden....................

You can't read the all page of ebook, please click here login for view all page.
Reset
3.137.160.137