Asynchronous programming is one of those topics that feels confusing until it suddenly clicks.

When I first started learning Python's asyncio, I understood the syntax but struggled to understand why things behaved the way they did. Why does await sometimes run sequentially? Why do we need tasks? When should we use locks, queues, or semaphores?

To build a stronger intuition, I created a small repository of focused examples that explore the core concepts of asyncio step by step.

Repository: https://github.com/maryu0/python-asyncio

Why AsyncIO?