Python高阶---协程并发
import asyncio
import time
====================================
1.定义协程对象
async def hello(x):
# time.sleep(x) # time.sleep是一个同步操作语句,无法达到异步的结果
print('-222-', x)
await asyncio.sleep(x)
return '等待了{}秒'.format(x)
# return x
if name == 'main':
s_time = time.time()
# 2.创建协程对象
coro1 = hello(1)
coro2 = hello(2)
coro3 = hello(3)
# # 3.获取事件循环对象容器
loop = asyncio.get_event_loop()
# 4.将协程对象转化为task
tasks = [asyncio.ensure_future(coro1),
asyncio.ensure_future(coro2),
asyncio.ensure_future(coro3)] # 建议使用
# 5.将task任务扔进事件循环对象触发
# 将tasks注册到事件循环中
# 两种方法:asyncio.wait, asyncio.gather
# 第一种方法:asyncio.wait
# loop.run_until_complete(asyncio.wait(tasks)) # wait方法只接受列表作为参数
# 第二种方法:asyncio.gather
loop.run_until_complete(asyncio.gather(*tasks)) # gather方法方法接收不定量参数
for task in tasks:
print('任务返回的结果是:', task.result()) # 获取回调结果
e_time = time.time()
print('总时间:', e_time - s_time)
# =============================================
合集:
Python基础+高阶
分类:
Python基础+高阶知识
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具