Hi! Let’s do a simple example of async/await in Python. We will be using Python 3.8.10. Let’s go! ⚡⚡✨✨
The async/await syntax is what is used by the asyncio library to perform multitasking in Python. Recall that multitasking in programming is all about getting better performance by having multiple processes work at the same time. The processes may execute in-sequence, out-of-sequence, they will overlap each other and run in parallel but the final outcome will be unaffected.
The asyncio library offers a simple and safe way to achieve multitasking, but there are other ways to accomplish the same thing in Python. Now, let’s write some code:
import asyncio, time, datetime
async def main():
print(f'{datetime.datetime.strptime(time.ctime(), "%c")} Start')
await asyncio.sleep(2.0)
print(f'{datetime.datetime.strptime(time.ctime(), "%c")} Stop')
asyncio.run(main())
Let’s explain what is happening here:
- First, import the asyncio library. If you don’t have it installed by default you can use the simple command pip install asyncio to install it. We also import the time and datetime libraries.
- The function main() is defined with the syntax keywords async def. This is our coroutine function, and the statement block is our coroutine function definition. This function will return a coroutine object. A coroutine is a function that can be entered, exited or resumed at many different points.
- We print the current date and time, including the seconds so we can see how the coroutine works.
- The await keyword expression allows us to use awaitable objects. Awaitable objects include coroutines, tasks and futures. The method asyncio.sleep() is a coroutine and also an awaitable object. The sleep() method will block or stop the execution of the program for the specified number of seconds. The number of seconds is supplied as the delay parameter. In this case the delay is only 2 seconds.
- The await keyword can only be used inside the coroutine function. As of Python 3.7 both async and await became keywords/reserved words in python.
- After the program sleeps for 2 seconds, it will execute the second print statement and print the stop time.
- The asyncio.run() method is what will execute our coroutine and return the result. The coroutine name in this case is the name of our coroutine function, main(). This method will create a new event loop and close it at the end.
That’s it! Once all goes well, when we execute this code we will get the first statement followed by a pause of 2 seconds then a second statement will be printed to the screen. See below output and note the difference of seconds between the two dates:
#output
#2022-01-02 21:07:52 Start
#2022-01-02 21:07:54 Stop
See the difference in the time? Exactly 2 seconds! Thanks for reading our simple example of async/await. You can find a more complex example HERE and find the asyncio documentation HERE. Good luck! 👌👌👌