In this example, we will show you how to call a function asynchronously from within a loop and wait for the results using asyncio in Python.
Here in this example code, we are calling the time_taking_operation() function asynchronously from within a loop. The asyncio.gather() function collects all responses returned by time_taking_operation() function:
import asyncio import random async def time_taking_operation(item): print("operation started for : ", item) #multipying the item result = item * item #getting a random number from 0 to 100 time = random.randint(0,100) #making the function wait for the random period of time to fake real time consuming operation await asyncio.sleep(time) print("operation complete for : ", item) return result async def main(data_list): #looping through the list and calling time_taking_operation function coros = [time_taking_operation(item) for item in data_list] #waiting and collecting responses from each call to time_taking_operation function results = await asyncio.gather(*coros) return results if __name__ == "__main__": data_list = [1,2,3,4,5,6,7,8,9,10] loop = asyncio.get_event_loop() results = loop.run_until_complete(main(data_list)) print("Final results = ", results)
The output of the above example will look something like this: