On Thu, Nov 12, 2015 at 5:43 PM, Christian Gollwitzer <aurio...@gmx.de> wrote: > My understanding of async is that it creates an event loop. In which case > the loop has no chance to run within a block of code that computes anything, > is that correct?
This is correct. At its simplest, asynchronous code is an abstraction over the select() call, which basically says "Hey system, tell me when (a) I can read from here, (b) I can write to here, or (c) I've been waiting this long". The most common use is sockets; a web server has its main listening socket (it becomes readable when someone connects), any clients that haven't finished sending their requests yet (they become readable when more data arrives), any clients that you're still sending to (they become writeable when there's room in their output buffers), and maybe some sort of periodic checks ("every hour, do maintenance"). Whenever you finish a bit of processing (reading from a client, sending to a client, whatever), you return to the "event loop", which in this case would be select(). An async library makes all this look a lot cleaner in your code, but ultimately, it's not preemptive. You still have to make sure the processing doesn't take too long. ChrisA -- https://mail.python.org/mailman/listinfo/python-list