Python aiter() Function



The Python aiter() function is a built-in function that was introduced in version 3.10 as an asynchronous programming feature. It returns an asynchronous iterator for an asynchronous iterable object. The term asynchronous iterator is defined as an object that implements the __aiter__() and __anext__() methods.

In synchronous iteration, the program block or wait for each operation to complete before moving on to the next one. However, with aiter() function which is asynchronous in nature, the program is allowed to initiate another operation without waiting for the previous ones to finish.

Syntax

Following is the syntax of the Python aiter() function −

aiter(asyncIterable)

Parameters

The Python aiter() function accepts a single parameter −

  • asyncIterable − It represents an asynchronous iterable object.

Return Value

The Python aiter() function returns an asynchronous iterator.

Examples

The following examples will help us in understanding the working of aiter() function −

Example 1

In the following example, we are illustrating the basic usage of Python aiter() function. Here we are creating an asynchronous generator function. It generates numbers from 0 to 3, with a delay of 2 seconds between each number.

import asyncio
async def async_iter():
   for num in range(4):
      await asyncio.sleep(2)
      yield num

async def main():
   async for res in aiter(async_iter()):
      print(res)
        
asyncio.run(main())

When we run above program, it produces following result −

0
1
2
3

Example 2

In the code below, we are generating a number between the range of 4 to 8 without any delay by using the aiter() function.

import asyncio
async def async_gentr():
   for num in range(4, 8):
      yield num

async def main():
   async for res in aiter(async_gentr()):
      print(res)

asyncio.run(main())

Following is an output of the above code −

4
5
6
7

Example 3

The code below shows how to use the aiter() method in combination with __aiter__() and __anext__() methods. Here, we are creating an asynchronous list object and then iterating over it to print its items.

import asyncio
class AsyncIterator:
   def __init__(self, data):
      self.data = data
      self.index = 0

   def __aiter__(self):
      return self

   async def __anext__(self):
      if self.index == len(self.data):
         raise StopAsyncIteration
      value = self.data[self.index]
      self.index += 1
      return value

async def main():
   async_iter = AsyncIterator([18, 19, 10, 11])
   async for value in aiter(async_iter):
      print(value)
        
asyncio.run(main())

Output of the above code is as follows −

18
19
10
11

Example 4

In the code below, we have defined aiter() as an asynchronous generator that yields items from the specified iterable. Then, it computes their sum using sumOfnum() method, and prints the result.

import asyncio
async def aiter(iter):
   for item in iter:
      yield item

async def sumOfnum(iter, start=0):
   async for x in aiter(iter):
      start += x
   return start

async def main():
   numerics = [4, 12, 20, 13, 15]
   total = await sumOfnum(numerics)
   print(f"The sum of the numbers is {total}")

asyncio.run(main())

Following is an output of the above code −

The sum of the numbers is 64
python_built_in_functions.htm
Advertisements