Python:如何在没有asyncio的情况下使用async / await?

时间:2017-12-12 09:52:05

标签: python async-await

我试图了解async / await在Python中是如何工作的。所以我想创建一个使用这种语法的小型演示程序。

async def f():创建了一个协程。据我所知,coroutine是一个可恢复的功能。因此,它应该能够启动,而不是屈服控制(可选地带有一些中间结果),然后应该可以恢复它,最后函数应该返回一些值。

但即使让它运行也不是那么容易!简单程序:

# tstasync.py
async def f():
    print("f is running!")
    return 42

f()

抱怨:RuntimeWarning: coroutine 'f' was never awaited

使用await关键字无济于事:

File "./tstasync.py", line 6
    await f()
          ^
SyntaxError: invalid syntax

这是因为await只能在另一个async函数中使用!那么如何开始?

然后,我的异步函数如何产生控制权?异步函数中不允许使用yield关键字。它应该调用await某些东西(另一个协同程序),但是如果另一个coruotine没有等待其他东西它就行不通。再次关闭圈子。

演示程序不应使用asyncio或任何其他模块/框架。因为async / await语法是一般的python语法,所以它不是asyncio的一部分,因此应该可以在不使用任何asyncio-magic的情况下理解它的作用。

0 个答案:

没有答案