协程示例
示例1#
import asyncio
import time
async def fun1():
print('fun1开始')
await asyncio.sleep(2)
print('fun1结束')
print(time.time())
async def fun2():
print('fun2开始')
await asyncio.sleep(5)
print('fun2结束')
print(time.time())
async def fun3():
print('fun3开始')
time.sleep(8)
print('fun3结束')
async def main():
# 添加并执行,await只是等待其执行完毕,防止程序过早结束。也可以等待其return值
task1 = asyncio.create_task(fun1())
task2 = asyncio.create_task(fun2())
# await task2等待协程task2执行结束,main才结束(程序结束)
await task2
if __name__ == '__main__':
print(time.time())
asyncio.run(main())
示例2 task列表#
import asyncio
import time
async def fun1():
print('fun1开始')
await asyncio.sleep(2)
print('fun1结束')
async def fun2():
print('fun2开始')
await asyncio.sleep(5)
print('fun2结束')
async def fun3():
print('fun3开始')
await asyncio.sleep(8)
print('fun3结束')
async def main():
print("main开始")
task_list = [
asyncio.create_task(fun1()),
asyncio.create_task(fun2()),
asyncio.create_task(fun3()),
]
print("main结束")
# 等待多个task结束
done,pending = await asyncio.wait(task_list)
print(done)
print()
print(pending)
if __name__ == '__main__':
asyncio.run(main())
作者:cloud-2-jane
出处:https://www.cnblogs.com/cloud-2-jane/articles/18620147
版权:本作品采用「署名-非商业性使用-相同方式共享 4.0 国际」许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架