python中的asyncio异步协程怎么实现
发表于:2025-11-09 作者:千家信息网编辑
千家信息网最后更新 2025年11月09日,这篇"python中的asyncio异步协程怎么实现"文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一
千家信息网最后更新 2025年11月09日python中的asyncio异步协程怎么实现
这篇"python中的asyncio异步协程怎么实现"文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇"python中的asyncio异步协程怎么实现"文章吧。
一、定义协程
asyncio 执行的任务,称为协程,但是Asyncio 并不能带来真正的并行
Python 的多线程因为 GIL(全局解释器锁)的存在,也不能带来真正的并行
import asyncio# 通过 async 定义一个协程async def task():print('这是一个协程')# 判断是否是一个协程,返回Trueprint(asyncio.iscoroutinefunction(task))二、运行协程
import asyncio# 通过 async 定义一个协程async def task(s):print('请等待 {} 秒'.format(s))await asyncio.sleep(s)print('协程结束')# 协程运行loop = asyncio.get_event_loop()loop.run_until_complete(task(3))三、协程回调
加入我们处理完协程任务后,需要告诉开发人员,这里程序结束了
就需要使用到协程回调
import asyncio# 通过 async 定义一个协程async def task(s):print('请等待 {} 秒'.format(s))await asyncio.sleep(s)return '这里task结束了,其他的继续吧'def callback(future):print(future.result())future = asyncio.ensure_future(task(3))future.add_done_callback(callback)loop = asyncio.get_event_loop()loop.run_until_complete(future)# 结果如下:# 请等待 3 秒# 这里task结束了,其他的继续吧四、运行多个协程
常常同一个项目中有多个协程
需要借助
asyncio.gather函数运行
import asyncio# 通过 async 定义一个协程async def task1(s):print('请等待 {} 秒'.format(s))await asyncio.sleep(s)print('这里task1结束了')# 通过 async 定义一个协程async def task2(s):print('请等待 {} 秒'.format(s))await asyncio.sleep(s)print('这里task2结束了')# 运行方法一loop = asyncio.get_event_loop()loop.run_until_complete(asyncio.gather(task1(1), task2(3)))# 运行方法二coros = [task1(1), task1(3)]loop.run_until_complete(asyncio.gather(*coros))# 结果如下:# 请等待 1 秒# 请等待 3 秒# 这里task1结束了# 这里task2结束了五、run_forever
通过
run_until_complete运行协程,协程运行完,程序也就结束退出了使用
run_forever运行,程序并不会退出,除非调用loop.stop()
import asyncio# 通过 async 定义一个协程async def task(s):await asyncio.sleep(s)# 程序并未退出结束loop = asyncio.get_event_loop()asyncio.ensure_future(task(3))loop.run_forever()
如果想让其退出,需要调用
loop.stop()我们可以在协程中调用
import asyncio# 通过 async 定义一个协程async def task(loop, s):await asyncio.sleep(s)# 关闭run_foreverloop.close()loop = asyncio.get_event_loop()asyncio.ensure_future(task(loop, 3))loop.run_forever()
六、多协程中关闭run_forever
单个协程中可以通过在协程中关闭,但是如果是两个以上的协程的时候
如果有一个协程先做完了就stop了,将会导致其他的协程也会异常退出,这肯定是不允许的
所以我们可以在回调函数中进行关闭
import asyncio, functoolsasync def task(x):await asyncio.sleep(x)print('这是协程任务')def callback(loop):loop.stop()loop = asyncio.get_event_loop()future = asyncio.gather(task(1), task(3))future.add_done_callback(functools.partial(callback, loop))loop.run_forever()以上就是关于"python中的asyncio异步协程怎么实现"这篇文章的内容,相信大家都有了一定的了解,希望小编分享的内容对大家有帮助,若想了解更多相关的知识内容,请关注行业资讯频道。
运行
内容
程序
任务
函数
多个
文章
方法
知识
篇文章
结果
这是
中关
两个
人员
价值
全局
加入我们
单个
可以通过
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
阿里 聊天消息 数据库
电子烟售货机软件开发
软件开发与测试工程专业
mc注册服务器指令是什么意思
服务器安装设置密码
小型数据库建设
滨海县网络安全知识竞赛
延庆区推广软件开发介绍
8兆专线物理服务器多少钱
小米官网自助服务器
软件开发的人怎么称呼
lol聊天服务器任务管理器
软件开发都是用什么语言
汇真网络技术传媒
极限模型软件开发模型图
山东省地方戏曲剧种数据库
asp.net搭建服务器
ns 暗黑2连接不上服务器
不安全服务器是什么意思
四川储存服务器虚拟主机
小米操作系统软件开发
数据库迁移方案范文
苏州戴尔服务器维修电话
怎么防止服务器被坑
ftp服务器实验报告
forest为什么服务器不同
db2数据库安全基线
dns 权威服务器
中国最厉害的网络安全系统
网络安全整改意见