August 2018
Intermediate to advanced
366 pages
10h 14m
English
We already know that the most important benefit of coroutines is that the event loop is able to pause their execution while they are waiting for I/O operations to let other coroutines proceed. While there is currently no built-in implementation of HTTP protocol with support for coroutines, it's easy enough to roll out a back version to reproduce our example of downloading a website concurrently to track how long it's taking.
As for the ThreadPool example, we will need the wait_until function that will wait for any given predicate to be true:
async def wait_until(predicate): """Waits until the given predicate returns True""" import time seconds = 0 while not predicate(): print('Waiting...') await asyncio.sleep(1) seconds += ...