首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Python中如何创建、运行和取消asyncio协程任务?

创建协程任务

基本用法

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())

  • 发表于:
  • 原文链接https://page.om.qq.com/page/OqUeN4Gv-DNK3xGVK5Hyc81g0
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券