- What makes asyncio different from multi-threading?
- Hint: how many threads are used, and is multitasking preemptive or cooperative?
- Why does the distinction of blocking vs. non-blocking matter in an asyncio program? What happens when an asyncio program runs something that blocks?
- What is the difference between a "subroutine" and a "coroutine"?
- In Python, what is the distinction between a coroutine and a "coroutine function"?
- Hint: official docs has a glossary entry for this
- What does a "task" represent in asyncio? What is it used for?
- An asyncio task takes a coroutine which will eventually start execution on the event loop. However, the event loop does not work with coroutines directly. What gets scheduled on the event loop instead?
- Highly recommend reading the source code at this point
- Hint: see
Task.__init__()