SyntaxError: ‘await‘ outside async function的原因与解决

我们看下面这个代码,表面上没什么问题

import asyncio

async def do1():
    await asyncio.sleep(2)
    print('两秒过去了')

async def do2():

    await asyncio.sleep(2)
    print('两秒又过去了')

async def do3():
    await asyncio.sleep(4)
    print('四秒过去了')
await do1()
await do2()
await do3()

但运行了以后会这样报错
SyntaxError: ‘await‘ outside async function的原因与解决_第1张图片
原因:await是要和创建协程时async一起搭配使用的,直接使用await就会找不到他所在的函数的,于是报错在函数外
解决方法:

  • 创建任务单
  • 创建事件
  • 实现并发运行

改进代码:

import asyncio

async def do1():
    await asyncio.sleep(2)
    print('两秒过去了')

async def do2():

    await asyncio.sleep(3)
    print('三秒过去了')

async def do3():
    await asyncio.sleep(4)
    print('四秒过去了')
renwu=[do1(),do2(),do3()]
loops=asyncio.get_event_loop()
loops.run_until_complete(asyncio.wait(renwu))

SyntaxError: ‘await‘ outside async function的原因与解决_第2张图片
完成的很顺利

你可能感兴趣的:(python,笔记,python,多线程)