创建协程任务
基本用法
import asyncio
async def add(a, b):
v = a + b
await asyncio.sleep(v / 1000)
return v
async def demo():
# 创建协程任务
t = asyncio.create_task(add(33, 333))
# 执行协程任务
r = await t
print(r)
# 运行协程
asyncio.run(demo())
创建多个任务
import asyncio
async def add(a, b):
v = a + b
await asyncio.sleep(v / 1000)
return v
async def demo():
# 创建协程任务
t1 = asyncio.create_task(add(33, 333))
t2 = asyncio.create_task(add(33, 333))
t3 = asyncio.create_task(add(33, 333))
# 执行协程任务
r = await t1
print(r)
r = await t2
print(r)
r = await t3
print(r)
# 运行协程
asyncio.run(demo())
取消任务
import asyncio
async def delay(name, n):
print(f"协程{name}开始开始休眠,将等待{n}秒")
await asyncio.sleep(n)
print(f"协程{name}开始结束休眠,已等待{n}秒")
return n
async def demo():
# 创建协程任务
t1 = asyncio.create_task(delay("t1", 3))
# 判断协程是否执行结束
wait_time = 0
while not t1.done():
# 每次等待1秒
await asyncio.sleep(1)
wait_time += 1
# 取消任务
if wait_time == 2:
t1.cancel()
print("超时取消任务")
# 执行协程任务
try:
r = await t1
print("任务正常结束:", r)
except asyncio.CancelledError:
print("由于任务超时,该任务已被取消")
# 运行协程
asyncio.run(demo())
领取专属 10元无门槛券
私享最新 技术干货