Python oferuje trzy modele współbieżności, a prawidłowy wybór zależy głównie od tego, czy praca jest I/O-bound czy CPU-bound — decyzja silnie kształtowana przez GIL (który uniemożliwia wątkom równoległy kod Python).
Trzy modele
threading → multiple threads, ONE process. GIL-limited for CPU.
multiprocessing → multiple PROCESSES, each its own interpreter/GIL → true parallelism.
asyncio → single thread, cooperative coroutines yielding at await points.
