2 ms·
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 g
by Klasiaster 11y ago
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()