如何在python 3.5+中使用async/await

Rah*_*hul 5 python asynchronous python-asyncio

我试图在python中解释一个异步编程的例子,但我失败了.这是我的代码.

import asyncio
import time

async def asyncfoo(t):
    time.sleep(t)
    print("asyncFoo")


loop = asyncio.get_event_loop()
loop.run_until_complete(asyncfoo(10)) # I think Here is the problem
print("Foo")
loop.close()
Run Code Online (Sandbox Code Playgroud)

我的期望是我会看到:

Foo
asyncFoo
Run Code Online (Sandbox Code Playgroud)

等待10秒才asyncFoo显示出来.

但相反,我没有得到任何10秒,然后他们都显示.

我做错了什么,怎么解释呢?

Udi*_*Udi 11

run_until_complete将阻止,直到asyncfoo完成.相反,你需要在循环中执行两个协同程序.使用asyncio.gather轻松启动多个协程用run_until_complete.

这是一个例子:

import asyncio


async def async_foo():
    print("asyncFoo1")
    await asyncio.sleep(3)
    print("asyncFoo2")


async def async_bar():
    print("asyncBar1")
    await asyncio.sleep(1)
    print("asyncBar2")


loop = asyncio.get_event_loop()
loop.run_until_complete(asyncio.gather(async_foo(), async_bar()))
loop.close()
Run Code Online (Sandbox Code Playgroud)