From bb4bd8d740f7a4363ae5b4cfed87b3a19b6bbc12 Mon Sep 17 00:00:00 2001 From: Sylvain Boureliou Date: Sun, 16 Oct 2016 11:27:58 +0200 Subject: [PATCH 1/2] Use asyncio.gather instead of asyncio.ensure_future The asyncio.ensure_future is not introduced in the previous examples. --- examples/producer_consumer.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/examples/producer_consumer.py b/examples/producer_consumer.py index 854f3e1..459b021 100644 --- a/examples/producer_consumer.py +++ b/examples/producer_consumer.py @@ -32,6 +32,7 @@ async def consume(queue): loop = asyncio.get_event_loop() queue = asyncio.Queue(loop=loop) -asyncio.ensure_future(produce(queue, 10), loop=loop) -loop.run_until_complete(consume(queue)) +producer_coro = produce(queue, 10) +consumer_coro = consume(queue) +loop.run_until_complete(asyncio.gather(producer_coro, consumer_coro)) loop.close() From d9dd4ee080a5ba410a2869b1a619caf43140214a Mon Sep 17 00:00:00 2001 From: Sylvain Boureliou Date: Sun, 16 Oct 2016 11:50:17 +0200 Subject: [PATCH 2/2] Added some comments --- examples/producer_consumer_join.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/examples/producer_consumer_join.py b/examples/producer_consumer_join.py index ba3202c..45c02f1 100644 --- a/examples/producer_consumer_join.py +++ b/examples/producer_consumer_join.py @@ -29,9 +29,13 @@ async def consume(queue): async def run(n): queue = asyncio.Queue() + # register the consume coroutine consumer = asyncio.ensure_future(consume(queue)) + # launch the producer and wait for completion await produce(queue, n) + # ensure the consumer consumes all produced items await queue.join() + # consumer is always awaiting for a new item, cancel it consumer.cancel()