anext() is a built-in function that retrieves the next item from an asynchronous iterator, acting as the async version of next(). It is essential when working with async iterators and generators, offering more flexibility in asynchronous workflows. Note: anext() is available starting in Python 3.10.
Explanation:
- async_numbers() iterating over the range 2, yielding values 0 and 1 sequentially, with execution paused at each yield until the next value is requested.
- main() creates an instance of the asynchronous generator agen = async_numbers() and calls anext(agen, 'End') three times, since the generator is exhausted.
anext() Syntax
anext(async_iterator, default)
Parameters:
- async_iterator(Required) : The asynchronous iterator to retrieve the next item.
- default(Optional) : default parameter is optional. If it is not provided and the iterator is exhausted, anext() raises a StopAsyncIteration
Returns:
- It returns the next item from the asynchronous iterator.
- If exhausted, returns default (if provided) or raises StopAsyncIteration if not.
anext() Examples
Example: 1: No Default Value Provided for anext()
This example demonstrates fetching values asynchronously from an asynchronous generator and handling exhaustion using StopAsyncIteration.
Output0
1
Generator exhausted
Explanation:
- async_numbers() is an asynchronous generator that yields two values, 0 and 1.
- main() creates an async generator agen, fetches values using await anext(agen), and handles exhaustion by printing "Generator exhausted" when the generator is empty.
Example: 2: Processing Queue Items
This example demonstrates processing tasks from a queue asynchronously using an asynchronous generator.
Output
Processed task1
Processed task2
Explanation:
- process_item() takes an item, simulates processing it and returns a string in the format "Processed {item}".
- main() defines a queue ['task1', 'task2'], creates an asynchronous generator async_gen that processes each item in the queue using process_item(item) and retrieves the processed results of task1 and task2 sequentially using await anext(async_gen).
Example 3: Real- Time notifications
This example demonstrates how to process real-time notifications asynchronously using an asynchronous generator.