VB.net 2010 视频教程 VB.net 2010 视频教程 python基础视频教程
SQL Server 2008 视频教程 c#入门经典教程 Visual Basic从门到精通视频教程
当前位置:
首页 > 编程开发 > python教程 >
  • python基础教程之Python3标准库:asyncio异步I/O、事件循环和并发工具(8)

本站最新发布   Python从入门到精通|Python基础教程
试听地址  
https://www.xin3721.com/eschool/pythonxin3721/


(i))
  • # Add None entries in the queue
  • # to signal the consumers to exit
  • print('producer: adding stop signals to the queue')
  • for i in range(num_workers):
  • await q.put(None)
  • print('producer: waiting for queue to empty')
  • await q.join()
  • print('producer: ending')
  •  
  • async def main(loop, num_consumers):
  • # Create the queue with a fixed size so the producer
  • # will block until the consumers pull some items out.
  • q = asyncio.Queue(maxsize=num_consumers)
  •  
  • # Scheduled the consumer tasks.
  • consumers = [
  • loop.create_task(consumer(i, q))
  • for i in range(num_consumers)
  • ]
  •  
  • # Schedule the producer task.
  • prod = loop.create_task(producer(q, num_consumers))
  •  
  • # Wait for all of the coroutines to finish.
  • await asyncio.wait(consumers + [prod])
  •  
  • event_loop = asyncio.get_event_loop()
  • try:
  • event_loop.run_until_complete(main(event_loop, 2))
  • finally:
  • event_loop.close()
  • 用put()增加元素和用get()删除元素都是异步操作,因为队列大小可能是固定的(阻塞增加操作),或者队列可能为空(阻塞获取元素的调用)。

    相关教程
            
    关于我们--广告服务--免责声明--本站帮助-友情链接--版权声明--联系我们       黑ICP备07002182号