Asyncio
Async (Cooperative Multitasking) The Model: There is one thread (one worker).
The Control: The code decides when to switch tasks.
Mechanism: When your code hits await (or yield), it voluntarily hands control back to the Event Loop.
Analogy: A single chess master playing against 50 opponents simultaneously. The master makes a move on Board 1, then immediately walks to Board 2. There is only one person moving pieces, but 50 games are progressing.
Multithreading (Preemptive Multitasking) The Model: There are multiple threads (multiple workers).
The Control: The Operating System decides when to switch tasks.
Mechanism: The OS slices time into tiny chunks. It runs Thread A for 10ms, then forcibly pauses it (interrupts) to run Thread B for 10ms. Thread A has no say in this.
Analogy: 50 novice chess players playing 50 games. They play at the same time, but they crowd the room, bump into each other, and consume more resources (space/food).