"This is one of the best technical books I've ever read. The writing is so good, and it covers an incredible amount of knowledge. Hands down, this is the best reference material on using asyncio anywhere." - Kent R. Spillner
Learn how to speed up slow Python code with concurrent programming and the cutting-edge asyncio library.
Python is flexible, versatile, and easy to learn. It can also be very slow compared to lower-level languages. Python Concurrency with asyncio teaches you how to boost Python's performance by applying a variety of concurrency techniques. You'll learn how the complex-but-powerful asyncio library can achieve concurrency with just a single thread and use asyncio's APIs to run multiple web requests and database queries simultaneously. The book covers using asyncio with the entire Python concurrency landscape, including multiprocessing and multithreading.
about the technology
The time demands of running code synchronously quickly overload standard Python and slow your programs to a crawl. Python's Asynchronous I/O library asyncio was built to solve these performance problems by making it easy to divide and schedule computational tasks so they can be run independently. asyncio concurrently handles multiple operations without a drop in throughput or responsiveness, making your apps lightning fast and easier to scale.
about the book
Python Concurrency with asyncio teaches you to write concurrent Python code that will boost the speed of your apps and APIs. The book demystifies asynchio's unique single-threaded concurrency model, giving you a behind-the-scenes understanding of the library and its new async/await syntax. Hard-to-grok concurrency topics are broken down into simple flowcharts so you can easily see how your coroutines and tasks are running.
You'll learn to apply asyncio to solve common performance problems, such as batch database jobs, slow web servers, and scaling microservices. All examples you'll build are designed to be usable in the real world, including a clever command line SQL client that can run multiple slow queries at the same time. By the time you're done, you'll even be able to combine asyncio with traditional multiprocessing and multithreading techniques for huge improvements to performance.
what's inside
Use coroutines and tasks alongside async/await syntax to run code concurrently
Build web APIs and make concurrency web requests with aiohttp
Run thousands of SQL queries concurrently
Create a map-reduce job that can process gigabytes of data concurrently
Use threading with asyncio to mix blocking code with asyncio code
about the reader
For intermediate Python programmers. No previous experience of concurrency required.
about the author
Matthew Fowler has over 15 years of software engineering experience in roles from architect to engineering director. He has worked on Python codebases in the machine learning space, as well as led development of a Python-based ecommerce site with tens of millions of users.