Start here. This is the direct spoken answer to practice first.
Overview
Separates overlapping I/O work from simultaneous execution across processing resources.
Asynchronous concurrency lets one thread make progress on other work while an operation is waiting, usually by suspending at await. Parallelism means work is executing at the same time on multiple cores or processing units. An asyncio event loop normally gives concurrency on one thread; it does not make Python code run in parallel. Threads or processes may add parallel execution, depending on the runtime and workload.