理解协程的实例分析1

import asyncio

async def a(t):

    print('-->', t)

    await asyncio.sleep(0.5)

    print('<--', t)

    return t * 10

def main():

    futs = [a(t) for t in range(6)]

    # a(t)函数是一个异步函数,协程对象,所以这里打印出来的futs列表是一堆协程对象

    print(futs)

    # gather这里要用*futs拆包

    ret = asyncio.gather(*futs)

    # 这里的ret还没有被真正执行所以打印出来是pending

    print(ret)

    loop = asyncio.get_event_loop()

    ret1 = loop.run_until_complete(ret)

    # 这里ret已经执行完了,所以打印出来是finished result

    print(ret)

    print(ret1)

main()

你可能感兴趣的:(理解协程的实例分析1)