Start here. This is the direct spoken answer to practice first.
Overview
Builds a cooperative scheduling model for tasks, callbacks, readiness, and I/O polling.
An event loop runs callbacks and ready tasks in its thread. One task executes Python code until it finishes, raises, or suspends while awaiting something incomplete. The loop can then run other ready work or wait for I/O readiness and timers. When the awaited operation completes, the task becomes ready to resume. This is cooperative scheduling: tasks must reach suspension points for other work to run.