
How async/await works in Python 3.5 - brettcannon
http://www.snarky.ca/how-the-heck-does-async-await-work-in-python-3-5
======
Klasiaster
So it seems it would be able to have goless in python3 with this? The
combination of spawning a function and using channels between them is great.
Specially the optional numeric argument of chan() where you can specify
whether it's blocking or not, having a send buffer etc. Using an event loop
with async/await could work nicely. Or also a version using real threads
instead.

[https://goless.readthedocs.org/en/latest/](https://goless.readthedocs.org/en/latest/)

~~~
Klasiaster
It looks different than in Go, but works the same (when simulating a handshake
for synchronous channels).

#!/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()

------
JonathonW
Nice-- I've found async/await really useful in C#/.NET and didn't realize it
was making its way into Python (I'm still mostly writing Python 2.7 code here
for availability reasons).

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?

~~~
tpetricek
The fun thing is that you could do the same thing in C# before async/await
:-). [http://tomasp.net/blog/csharp-
async.aspx/](http://tomasp.net/blog/csharp-async.aspx/)

~~~
brettcannon
C# a actually inspired Python's implementation. Python historically takes
ideas from other languages and refines them to Python's style.

------
scrollaway
This is such a good blog post. Thank you for writing it.

~~~
brettcannon
Welcome! Glad you liked it.

