全网整合营销服务商

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

免费咨询热线: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 


相关文章: jQuery 常见小例汇总  娃派WAP自助建站:免费模板+移动优化,快速打造专业网站  音乐网站服务器如何优化API响应速度?  如何通过.red域名打造高辨识度品牌网站?  网站制作与设计教程,如何制作一个企业网站,建设网站的基本步骤有哪些?  可靠的网站设计制作软件,做网站设计需要什么样的电脑配置?  制作网站的网址是什么,请问后缀为.com和.com.cn还有.cn的这三种网站是分别是什么类型的网站?  实例解析angularjs的filter过滤器  广东企业建站网站优化与SEO营销核心策略指南  青浦网站制作公司有哪些,苹果官网发货地是哪里?  建站之星后台密码遗忘如何找回?  台州网站建设制作公司,浙江手机无犯罪记录证明怎么开?  建站中国官网:模板定制+SEO优化+建站流程一站式指南  无锡营销型网站制作公司,无锡网选车牌流程?  如何快速搭建高效服务器建站系统?  网站制作话术技巧,网站推广做的好怎么话术?  标准网站视频模板制作软件,现在有哪个网站的视频编辑素材最齐全的,背景音乐、音效等?  北京网站制作公司哪家好一点,北京租房网站有哪些?  如何通过免费商城建站系统源码自定义网站主题与功能?  如何通过wdcp面板快速创建网站?  建站之星如何保障用户数据免受黑客入侵?  如何快速搭建高效香港服务器网站?  香港服务器如何优化才能显著提升网站加载速度?  北京网站制作的公司有哪些,北京白云观官方网站?  如何在IIS中新建站点并配置端口与物理路径?  常州自助建站费用包含哪些项目?  详解ASP.NET 生成二维码实例(采用ThoughtWorks.QRCode和QrCode.Net两种方式)  贸易公司网站制作流程,出口贸易网站设计怎么做?  如何用腾讯建站主机快速创建免费网站?  网站专业制作公司,网站编辑是做什么的?好做吗?工作前景如何?  建站主机CVM配置优化、SEO策略与性能提升指南  活动邀请函制作网站有哪些,活动邀请函文案?  电商网站制作多少钱一个,电子商务公司的网站制作费用计入什么科目?  微信h5制作网站有哪些,免费微信H5页面制作工具?  如何用花生壳三步快速搭建专属网站?  北京营销型网站制作公司,可以用python做一个营销推广网站吗?  如何选择高效可靠的多用户建站源码资源?  制作网站的公司有哪些,做一个公司网站要多少钱?  ,怎么在广州志愿者网站注册?  网站建设制作、微信公众号,公明人民医院怎么在网上预约?  建站OpenVZ教程与优化策略:配置指南与性能提升  如何通过智能用户系统一键生成高效建站方案?  韩国服务器如何优化跨境访问实现高效连接?  猪八戒网站制作视频,开发一个猪八戒网站,大约需要多少?或者自己请程序员,需要什么程序员,多少程序员能完成?  如何在建站主机中优化服务器配置?  表情包在线制作网站免费,表情包怎么弄?  如何用搬瓦工VPS快速搭建个人网站?  建站之星如何快速解决建站难题?  IOS倒计时设置UIButton标题title的抖动问题  如何挑选最适合建站的高性能VPS主机? 

您的项目需求

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