Loading

协程示例

示例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())
posted @ 2024-12-21 00:03  一只大学生  阅读(14)  评论(0)    收藏  举报