asyncio.Queue is a thread-safe async queue for producer-consumer patterns.
1import asyncio23async def producer(queue, n):4 for i in range(n):5 await asyncio.sleep(0.5)6 item = f"item-{i}"7 await queue.put(item)8 print(f"Produced: {item}")9 await queue.put(None) # Signal completion1011async def consumer(queue):12 while True:13 item = await queue.get()14 if item is None:15 break16 await asyncio.sleep(0.3) # Process17 print(f"Consumed: {item}")18 queue.task_done()1920async def main():21 queue = asyncio.Queue(maxsize=5)22 await asyncio.gather(23 producer(queue, 10),24 consumer(queue)25 )2627asyncio.run(main())
Methods:
put() — add item (awaitable).get() — remove item (awaitable).task_done() — signal processing complete.join() — wait until all items processed.