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!
Asyncio is a library to write concurrent code using the async/await syntax.https://docs.python.org/3/library/asyncio.html
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
asyncronouslyinto a function
- We add the keyword
asyncbefore 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.