Steve D'Aprano <steve+pyt...@pearwood.info>: > py> await x > File "<stdin>", line 1 > await x > ^ > SyntaxError: invalid syntax
"await" is only allowed inside a coroutine. > So why do we need asyncio? What is it actually good for? Asyncio is a form of cooperative multitasking. It presents a framework of "fake threads". The objective and programming model is identical to that of threads. As to why Python should need a coroutine framework, you can answer it from two angles: 1. Why does one need cooperative multitasking? 2. Why should one use coroutines to implement cooperative multitasking? 1. Cooperative multitasking has made its way in Java ("NIO") and C# (async/await). It has come about as enterprise computing realized the multithreading model of the 1990's was shortsighted. In particular, it wasn't scalable. Enterprise solutions collapsed under the weight of tens of thousands of threads. Stack space ran out and schedulers became slow. <URL: https://en.wikipedia.org/wiki/C10k_problem> 2. I have always been into asynchronous programming (cooperative multitasking), but coroutines are far from my favorite programming model. I am guessing Guido introduced them to Python because: * C# has them (me too!). * They have a glorious computer scientific past (CSP, emperor's new I/O framework). * They look like threads. * They were already there in the form of generators (low-hanging fruit). And, maybe most importantly: * Twisted (et al) had needed an event-driven framework but Python didn't have one out of the box (<URL: https://lwn.net/Articles/692254/>). Marko -- https://mail.python.org/mailman/listinfo/python-list