It looks different than in Go, but works the same (when simulating a handshake for synchronous channels).<p>#!&#x2F;usr&#x2F;bin&#x2F;env python3.5<p>import asyncio<p>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<p>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)<p>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()