How async/await works in Python 3.5
snarky.ca
snarky.ca
#!/usr/bin/env python3.5
import asyncio
async def give(start, end, c, k): for i in range(start, end): await c.put(i) await k.get() # sync send await c.put(None) # simulate closing of channel
async def consume(c, k): while True: x = await c.get() await k.put(True) # sync recv if x is None: # channel closed return print(x)
loop = asyncio.get_event_loop() c, k = asyncio.Queue(), asyncio.Queue() tasks = [asyncio.ensure_future(give(3, 7, c, k)), asyncio.ensure_future(consume(c, k))] try: loop.run_until_complete(asyncio.wait(tasks)) finally: loop.close()
A little disappointed that it doesn't look like there's really support for it in the standard library's networking packages, though... hopefully more will be coming in 3.6 or 3.7?
This includes lots of network libraries and database clients.