Dive deep into the realm of asynchronous programming in Python with our comprehensive course on the high-level API of Asyncio. Asynchronous programming is crucial for building efficient, concurrent, and scalable applications, and this course equips you with the knowledge and skills to leverage Asyncio effectively.
You'll start by exploring the fundamentals of asynchronous programming, including coroutines and tasks. Learn how coroutines enable non-blocking operations and how tasks help manage concurrent operations efficiently.
Dive deep into the realm of asynchronous programming in Python with our comprehensive course on the high-level API of Asyncio. Asynchronous programming is crucial for building efficient, concurrent, and scalable applications, and this course equips you with the knowledge and skills to leverage Asyncio effectively.
You'll start by exploring the fundamentals of asynchronous programming, including coroutines and tasks. Learn how coroutines enable non-blocking operations and how tasks help manage concurrent operations efficiently.
Next, discover the power of asynchronous context managers and the async with syntax for resource management in asynchronous code. Understand how to handle groups of tasks seamlessly using the TaskGroup() class and the gather() function, enabling you to coordinate and execute multiple asynchronous operations concurrently.
Gain proficiency in working with asynchronous iterators and the async for syntax, allowing you to iterate over asynchronous sequences effortlessly. Explore the capabilities of asynchronous comprehensions for creating asynchronous sequences efficiently.
Delve into asynchronous generators to create asynchronous context managers easily. Learn how to utilize asynchronous queues for communication and data exchange between asynchronous tasks in a thread-safe manner.
Finally, understand the importance of synchronization mechanisms such as Lock, Semaphore, Event, and Condition for coordinating access to shared resources and ensuring thread-safe execution of coroutines.
By the end of this course, you'll be equipped with the expertise to design and implement robust, concurrent Python applications using the high-level API of Asyncio. Take your asynchronous programming skills to the next level and unlock new possibilities in Python development.
Topics
- what are coroutines and tasks
- asynchronous context managers, async with syntax
- groups of tasks using TaskGroup() class and gather() function.
- asynchronous iterators and async for syntax
- asynchronous comprehensions
- asynchronous generators
- asynchronous queues
- synchronization of coroutines using Lock, Semaphore, Event, Condition
What is asynchronous programming and what issues it solves. What is async/await keywords.
What are coroutines, how to create, and call them
What are tasks, how to create, use, and cancel them
Demonstration of some non-obvious issues of how the run() function works.
We will look at implementation of context managers, and we will write an Asynchronous Context manager
How to use the gather() to run coroutines, and gather their results
Demonstration of non-obvious issues when using await keyword.
The TaskGroup() class was introduced in Python 3.11 how to use it, and its features.
In this video, we'll explore the differences in task cancellation when using the gather() function versus the TaskGroup() class.
How to create a class which implements the iteration protocol to use with async for syntax.
How to use asynchronous comprehensions to generate lists, dicts, sets
Main use case of generators is creating of context managers using the contextlib module, and @contexmanager decorator. In this video we'll look at creating of async context managers using the @asynccontexmanager decorator
What is Queue as a data structure, how to use queues, and what is the Producer-Consumer pattern
In this video we will write an asynchronous crawler that will download images.
This crawler will use 3 different queues to store intermediate results.
What is the synchronization of coroutines and why do we need sometimes to use it.
The first synchronization primitive - Lock() class
The second synchronization primitive in AsyncIO - Semaphore() class.
In this video we will write a requests rate limiting decorator function.
Event() - the way to build a notification system for your app, if you need to notify some part of your program about some events.
The last synchronization class - Condition() class, and how to use it
OpenCourser helps millions of learners each year. People visit us to learn workspace skills, ace their exams, and nurture their curiosity.
Our extensive catalog contains over 50,000 courses and twice as many books. Browse by search, by topic, or even by career interests. We'll match you to the right resources quickly.
Find this site helpful? Tell a friend about us.
We're supported by our community of learners. When you purchase or subscribe to courses and programs or purchase books, we may earn a commission from our partners.
Your purchases help us maintain our catalog and keep our servers humming without ads.
Thank you for supporting OpenCourser.