python中利用队列asyncio.Queue进行通讯详解
发布时间 - 2026-01-11 03:11:04 点击率:次前言

本文主要给大家介绍了关于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
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
Laravel怎么使用Session存储数据_Laravel会话管理与自定义驱动配置【详解】
如何挑选优质建站一级代理提升网站排名?
浅述节点的创建及常见功能的实现
Laravel的辅助函数有哪些_Laravel常用Helpers函数提高开发效率
Android Socket接口实现即时通讯实例代码
学生网站制作软件,一个12岁的学生写小说,应该去什么样的网站?
Laravel Livewire是什么_使用Laravel Livewire构建动态前端界面
如何在阿里云部署织梦网站?
Laravel Eloquent:优雅地将关联模型字段扁平化到主模型中
Laravel如何自定义错误页面(404, 500)?(代码示例)
电商网站制作价格怎么算,网上拍卖流程以及规则?
Laravel如何生成URL和重定向?(路由助手函数)
js实现获取鼠标当前的位置
Laravel的契約(Contracts)是什么_深入理解Laravel Contracts与依赖倒置
Laravel怎么集成Log日志记录_Laravel单文件与每日日志配置及自定义通道【详解】
如何在橙子建站中快速调整背景颜色?
微信小程序 input输入框控件详解及实例(多种示例)
如何撰写建站申请书?关键要点有哪些?
在线制作视频的网站有哪些,电脑如何制作视频短片?
Laravel中Service Container是做什么的_Laravel服务容器与依赖注入核心概念解析
如何快速搭建支持数据库操作的智能建站平台?
Laravel如何使用withoutEvents方法临时禁用模型事件
Laravel如何使用Service Provider服务提供者_Laravel依赖注入与容器绑定【深度】
如何在阿里云虚拟机上搭建网站?步骤解析与避坑指南
标题:Vue + Vuex + JWT 身份认证的正确实践与常见误区解析
php读取心率传感器数据怎么弄_php获取max30100的心率值【指南】
JavaScript实现Fly Bird小游戏
PHP的CURL方法curl_setopt()函数案例介绍(抓取网页,POST数据)
晋江文学城电脑版官网 晋江文学城网页版直接进入
移动端脚本框架Hammer.js
如何挑选高效建站主机与优质域名?
网站制作公司哪里好做,成都网站制作公司哪家做得比较好,更正规?
免费视频制作网站,更新又快又好的免费电影网站?
Laravel如何创建和注册中间件_Laravel中间件编写与应用流程
如何在万网主机上快速搭建网站?
EditPlus中的正则表达式实战(6)
高防服务器如何保障网站安全无虞?
Laravel如何使用Eloquent ORM进行数据库操作?(CRUD示例)
Laravel怎么生成URL_Laravel路由命名与URL生成函数详解
Laravel如何自定义分页视图?(Pagination示例)
如何在VPS电脑上快速搭建网站?
Laravel如何使用软删除(Soft Deletes)功能_Eloquent软删除与数据恢复方法
bootstrap日历插件datetimepicker使用方法
轻松掌握MySQL函数中的last_insert_id()
如何快速配置高效服务器建站软件?
Laravel的路由模型绑定怎么用_Laravel Route Model Binding简化控制器逻辑
利用JavaScript实现拖拽改变元素大小
Laravel怎么实现验证码(Captcha)功能
php在windows下怎么调试_phpwindows环境调试操作说明【操作】
Microsoft Edge如何解决网页加载问题 Edge浏览器加载问题修复

