Python async, await 的理解与使用

关于 Python 中 async, await 关键字的一些知识在去年的一篇 探索 Flask 对 asyncio 的支持 有讲到,一直没在实际上用过它们,所以基本上也就忘干净了。随着 Flask 2 加入了 async 的特性,以及 FastAPI 从一开始支持 async, 又觉得有必要重新温习一下 Python 中如何使用 async, await 关键字了。

注:由于 Flask 支持了 async, 号称 async 化 Flask 的 Quart 项目开始变得无足轻重了。

本文主要的学习材料是在 YouTube 上的一个视频 Fear and Awaiting in Async (Screencast) , 其中用 Python REPL 以 Live 的形式展示,对 async, await 关键字循序渐进的讲解。

如今不少语言都支持 async, await 关键字,如 C#, JavaScript, Kotlin, Rust 等,还有今天的主角 Python。而 Java 仍然很重视函数返回值的意义,未支持 async, 只能显式的返回 Future/CompletableFuture, 而且自己控制如何在线程池中执行。

这又来到了一个叫做纤程的概念,它隐藏在 Python 的 async, await 背后,Go 语言对纤程的支持就更简单了, go foo() 就是了。

async 关键字的函数

>>> def greeting(name):
... return 'Hello ' + name
...
>>> greeting('Blog')
Hello Blog

>>> def greeting ( name ) :

. . . return 'Hello ' + name

. . .

>>> greeting ( 'Blog' )

Hello Blog

调用后,函数立即执行

对于一个普通的没有 async 关键字的函数,调用它直接得到它的返回值,如果给它加上 async 关键字会怎么样呢?

>>> async def greeting(name):
...     print('called gretting function')
...     return 'Hello ' + name
...
>>> greeting('Blog')
<coroutine object greeting at 0x10dc8ece0>
<

>>> async def greeting ( name ) :

. . .      print ( 'called gretting function' )

. . .      return 'Hello ' + name

. . .

>>> greeting ( 'Blog' )

< coroutine object greeting at 0x10dc8ece0 >

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值