Programming for Concurrency and Parallelism with Python
Python's asynchronous capabilities, powered by asyncio, have revolutionized how we build responsive and efficient applications, especially for I/O-bound tasks. However, truly leveraging Python for scalable solutions requires a clear understanding of both concurrency and parallelism. This talk will guide attendees through the core "Awaitables" – Coroutines, Tasks, and Futures – demystifying how async/await orchestrates concurrent operations within a single event loop.
Building on this foundation, we'll explore practical strategies for managing asynchronous workloads using a hands-on task scheduler project as a case study. Finally, we'll tackle the critical distinction between concurrency and parallelism, addressing Python's Global Interpreter Lock (GIL) and demonstrating how ProcessPoolExecutor enables true parallel execution for CPU-bound computations. Attendees will leave with a comprehensive understanding of how to design and implement robust, scalable Python applications by strategically combining asyncio for concurrency and multiprocessing for parallelism.