An exploration of threads, processes, and coroutines in Python, with interesting examples that illuminate the differences between each. Credit:1 Motivation As a data scientist who is spending more time on software engineering, I was recently forced to confront an ugly gap in my knowledge of Python: concurrency. To be honest, I never completely understood how the terms async, threads, pools and coroutines were different and how these mechanisms could work together.