全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

python中利用队列asyncio.Queue进行通讯详解

前言

本文主要给大家介绍了关于python用队列asyncio.Queue通讯的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧。

asyncio.Queue与其它队列是一样的,都是先进先出,它是为协程定义的

例子如下:

import asyncio 
 
 
async def consumer(n, q): 
 print('consumer {}: starting'.format(n)) 
 while True: 
  print('consumer {}: waiting for item'.format(n)) 
  item = await q.get() 
  print('consumer {}: has item {}'.format(n, item)) 
  if item is None: 
   # None is the signal to stop. 
   q.task_done() 
   break 
  else: 
   await asyncio.sleep(0.01 * item) 
   q.task_done() 
 print('consumer {}: ending'.format(n)) 
 
 
async def producer(q, num_workers): 
 print('producer: starting') 
 # Add some numbers to the queue to simulate jobs 
 for i in range(num_workers * 3): 
  await q.put(i) 
  print('producer: added task {} to the queue'.format(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() 

输出如下:

consumer 0: starting
consumer 0: waiting for item
consumer 1: starting
consumer 1: waiting for item
producer: starting
producer: added task 0 to the queue
producer: added task 1 to the queue
consumer 0: has item 0
consumer 1: has item 1
producer: added task 2 to the queue
producer: added task 3 to the queue
consumer 0: waiting for item
consumer 0: has item 2
producer: added task 4 to the queue
consumer 1: waiting for item
consumer 1: has item 3
producer: added task 5 to the queue
producer: adding stop signals to the queue
consumer 0: waiting for item
consumer 0: has item 4
consumer 1: waiting for item
consumer 1: has item 5
producer: waiting for queue to empty
consumer 0: waiting for item
consumer 0: has item None
consumer 0: ending
consumer 1: waiting for item
consumer 1: has item None
consumer 1: ending
producer: ending

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对的支持。


# python  # 队列queue  # 队列  # queue  # Python异步编程之asyncio.create_task()用法示例解析  # Python异步编程中asyncio.gather的并发控制详解  # Python使用asyncio.Queue进行任务调度的实现  # Python Asyncio库之asyncio.task常用函数详解  # python 使用事件对象asyncio.Event来同步协程的操作  # Python asyncio.run() 和 asyncio.gath  # 都是  # 相关内容  # 说了  # 不多  # 有一定  # 它是  # 给大家  # 这篇文章  # 谢谢大家  # 是一样的  # 有疑问  # item  # signal  # await  # waiting  # starting  # print  # True  # format  # stop 


相关文章: C++时间戳转换成日期时间的步骤和示例代码  如何获取PHP WAP自助建站系统源码?  网页设计网站制作软件,microsoft office哪个可以创建网页?  ,有什么在线背英语单词效率比较高的网站?  建站之星如何助力网站排名飙升?揭秘高效技巧  微信小程序 五星评分(包括半颗星评分)实例代码  简历在线制作网站免费版,如何创建个人简历?  如何快速搭建高效WAP手机网站吸引移动用户?  如何通过FTP空间快速搭建安全高效网站?  GML (Geography Markup Language)是什么,它如何用XML来表示地理空间信息?  高端企业智能建站程序:SEO优化与响应式模板定制开发  高性价比服务器租赁——企业级配置与24小时运维服务  名字制作网站免费,所有小说网站的名字?  动图在线制作网站有哪些,滑动动图图集怎么做?  如何在阿里云香港服务器快速搭建网站?  网页制作模板网站推荐,网页设计海报之类的素材哪里好?  如何快速搭建高效香港服务器网站?  成都网站制作价格表,现在成都广电的单独网络宽带有多少的,资费是什么情况呢?  如何在IIS中新建站点并配置端口与物理路径?  深圳网站制作平台,深圳市做网站好的公司有哪些?  如何选择CMS系统实现快速建站与SEO优化?  免费视频制作网站,更新又快又好的免费电影网站?  专业网站制作服务公司,有哪些网站可以免费发布招聘信息?  建站DNS解析失败?如何正确配置域名服务器?  利用JavaScript实现拖拽改变元素大小  c# await 一个已经完成的Task会发生什么  高防网站服务器:DDoS防御与BGP线路的AI智能防护方案  怎么制作一个起泡网,水泡粪全漏粪育肥舍冬季氨气超过25ppm,可以有哪些措施降低舍内氨气水平?  自助网站制作软件,个人如何自助建网站?  Swift开发中switch语句值绑定模式  建站之星×万网:智能建站系统+自助建站平台一键生成  建站主机系统SEO优化与智能配置核心关键词操作指南  香港服务器部署网站为何提示未备案?  如何在腾讯云服务器快速搭建个人网站?  制作网站的过程怎么写,用凡科建站如何制作自己的网站?  子杰智能建站系统|零代码开发与AI生成SEO优化指南  建站主机选购指南:核心配置与性价比推荐解析  建站OpenVZ教程与优化策略:配置指南与性能提升  网站按钮制作软件,如何实现网页中按钮的自动点击?  购物网站制作公司有哪些,哪个购物网站比较好?  网站制作难吗安全吗,做一个网站需要多久时间?  广东专业制作网站有哪些,广东省能源集团有限公司官网?  如何基于云服务器快速搭建个人网站?  建站之星伪静态规则如何设置?  贸易公司网站制作流程,出口贸易网站设计怎么做?  视频网站制作教程,怎么样制作优酷网的小视频?  香港服务器建站指南:外贸独立站搭建与跨境电商配置流程  整蛊网站制作软件,手机不停的收到各种网站的验证码短信,是手机病毒还是人为恶搞?有这种手机病毒吗?  官网自助建站系统:SEO优化+多语言支持,快速搭建专业网站  网站制作公司排行榜,抖音怎样做个人官方网站 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。