asyncio async await笔记

协程

import asyncio
from time import time


async def func1():
    print('start')
    await asyncio.sleep(1)  # await关键字,后面跟一个io操作,或者一个可能会发生阻塞的方法,不然就没什么用,而且await就必须写在async里面
    print('end')


async def func2():
    print('start')
    await asyncio.sleep(2)
    print('end')


async def func3():
    print('start')
    await asyncio.sleep(3)
    print('end')


# 同步执行协程操作
loop1 = asyncio.get_event_loop()
loop1.run_until_complete(func1())

# 异步执行协程操作
loop2 = asyncio.get_event_loop()
this_time = time()
loop2.run_until_complete(asyncio.wait(
    [func1(), func2(), func3()]
))
end_time = time() - this_time
print(end_time)  # 3.00   可以看到异步可以同时间完成

获取返回值

import asyncio

async def hello():
    print("123")
    await asyncio.sleep(1)
    print("321")
    return 'done'

loop = asyncio.get_event_loop()
task = loop.create_task(hello())
loop.run_until_complete(task)
ret = task.result()
print(ret)

 

 

获取多个返回值

import asyncio


async def hello(i):
    print("123")
    await asyncio.sleep(1)
    print("321")
    return i


loop = asyncio.get_event_loop()
task1 = loop.create_task(hello(1))
task2 = loop.create_task(hello(2))
task_list = [task1, task2]
loop.run_until_complete(asyncio.wait(task_list))
for i in task_list:
    res = i.result()
    print(res)

 

posted @ 2020-09-04 11:41  RainBol  阅读(392)  评论(0编辑  收藏  举报
Live2D