Python has never been the best at doing multiple things at the same time.
While there are ways to mostly resolve this, such as using the Multiprocessing library , it always seems a bit make-shift to me.
So many other languages have fantastic ways of resolving these types of issues, and Python now has an Async
way too!
Introducing Asyncio
Asyncio is a library to write concurrent code using the async/await syntax.
The easiest way to get started is to simply try this out:
import asyncio
async def main():
print('Hello ...')
await asyncio.sleep(1)
print('... World!')
# Python 3.7+
asyncio.run(main())
If you are running a Python version less than 3.7, then you will need to substitute asyncio.run(main())
with the following:
loop = asyncio.get_event_loop() loop.run_until_complete(main())
Otherwise you will get an error that says: AttributeError: module 'asyncio' has no attribute 'run'
Breaking it down
So if we break this small code snippet down, we can see that:
- We need to import the asyncio module
- We need to wrap the code we want to run
asyncronously
into a function - We add the keyword
async
before the function name we will call - We call our asynchronous function within an asyncio.run() call
This seems pretty easy.
There are additional functions we can call such as asyncio.sleep(1)
to pause the processing.
Note how when we do this, we prepend the await
keyword to the call.