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



