liveBook · Manning

Await keyword

As explained in Building LLM Applications with DSPy

The Python await keyword suspends a coroutine until an awaitable completes, then returns its result.

Await marks a point where a coroutine can pause, allowing asyncio’s event loop to switch to another task. Any function that uses await must be declared async. section 7.5.1

Listing 7.17 asyncio example
import asyncio
import time

async def func1():
    print("Start func1")
    await asyncio.sleep(5)
    print("End func1")
    return "func1 complete"

async def func2():
    print("Start func2")
    await asyncio.sleep(3)
    print("End func2")
    return "func2 complete"

async def main():
    start_time = time.time()
    co_routines = asyncio.gather(func1(), func2())
    a, b = await co_routines
    print(a, b)
    end_time = time.time()
    print("time", end_time-start_time)

asyncio.run(main())

See await used with asyncio.gather to run two coroutines concurrently and collect their results. section 7.5.1

How Building LLM Applications with DSPy covers it

How deep it goes
Explains await as a coroutine pause point managed by the event loop, without detailing awaitable internals.
Examples
Demonstrates awaiting asyncio.gather on two timed coroutines and collecting their return values.
What you can do after
Apply await in asyncio coroutines to yield during waits and collect results from concurrent tasks.
How it connects
Ties await to coroutines, async functions, tasks, and the asyncio event loop.

Related concepts

This explainer was generated by Manning's knowledge graph from the text of Building LLM Applications with DSPy. The section links point to the parts of the book it draws on.