python await作用_Python async/await 介绍

Python3.5增加了内置的async和await关键字。让我们用几个小例子来展示一下这两个关键字如何使用。

如果你不明白什么是“异步编程”,你可以简单地理解它为“在单个进程中同时处理多个任务的一种方法”。我们通常使用的进程经常花费大量的时间等待IO操作的完成。这种IO操作包括客户端请求网络、读取文件、查询数据库等等....同步程序一般是等待IO操作完成后再进行下一个任务,而异步程序则可以在IO操作期间去处理下一个任务。

这和你准备早餐的步骤有点相似。你煮了咖啡和茶,但是你不会待在那里等咖啡和茶煮好,而是直接去做饭或者烤面包了。你会并行地做多件事,当其中某项完成时,你会得到一个通知(可能是你的咖啡机或者电饭煲会叫)。这样,虽然你是一个进程,但是你能够更高效地同时完成很多工作。

我们下面看一个简单的例子,这里我们用asyncio.sleep模拟耗时的IO操作,并用asyncio.wait让它们并行运行。在Python3.5之前,代码应该大概是这样的:

这个例子中使用了原有的Python语法:装饰器和yield关键字。

运行这个脚本会有这样的输出:

如果使用Python3.5的语法,代码大概是这个样子:

新的async和await关键字清楚地表明我们在写的是一个异步函数,而不是普通的生成器。

然我们用Python3.5运行这个脚本:

再看一个更加复杂的例子,我们实现一个Web服务器,这个Web服务器本身还需要向其他服务发起请求。这种情况在监控网站经常发生。我们使用aiohttp,一个使用asyncio构建的服务器客户端套件。

让我们启动服务器

然后向这个服务器发送一个请求

今天的教程就这么多了,希望能激起你对新语法的兴趣。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值