async/await 使用场景简析
🕦 by pyList at 2019-10-21 22:36
简单说, async 用于申明一个 function 是异步的;而 await 则可以认为是 async await 的简写形式,是等待一个异步方法执行完成的。他们的应用场合是什么?
快速理解:同步、异步、多线程
- 同步方法:调用时需要等待返回结果,才可以继续往下执行业务
- 异步方法:调用时无须等待返回结果,可以继续往下执行业务
- 开启新线程:在主线程之外开启一个新的线程去执行业务
- 同步方法和异步方法的本质区别: 调用时是否需要等待返回结果才能继续执行业务
使用场合
理解后可以对号入座, async 是异步, await 是同步。考虑到程序的性能,一般多文件操作或者多任务操作会使用异步,但对本地文件操作其实很难会出现 IO 的瓶颈,所以一般 async 都是用于网络请求。
还有一点需要注意,async/await
并不是开启新的线程,它只是一种状态机,暂时退出当前场景,当监听到有新状态时就恢复上下文。如果是 CPU 消耗型的功能,比如大的图像处理,就不要使用异步,而是考虑多线程或多进程。golang 的 goroutine
在启动新线程方面做得很简洁。
权衡利弊
代码可读性、代码性能往往不能同时拥有,使用 async/await
也存在可读性与性能的问题,在实际使用中应该折中考虑,找到较好结合点。
本文网址: https://pylist.com/t/1571668573 (转载注明出处)
如果你有任何建议或疑问可以在下面 留言
发表第一条评论!
相关推荐
小工具
标签
pip
国内
使用
kvdb
sae
方便
socks5
代理
依赖
安装
memcached
正式
支持
openwrt
usb
上网卡
共享
网络
golang
断言
类型
注意
问题
xor
python
解密
加密
方法
bbr
路由
开启
百度
google
pk
三大
必应
json
解析
测试
速度
ubuntu
gnu
debian
linux
修砖记
变砖
ubnt
er
tftp
轻量级
博客
一款
ulimit
永久
设置
系统
之坑
files
open
服务
js
全屏
浏览器
实现
caddy
https
部署
网站
多个
spotify
chartify
开源
图表
failed
load
devtools
sourcemap
chrome
自动更新
microsoft
mac
关闭
app
store
登录
未知
静音
风扇
主机
笔记本
改造
低功耗
web
爬虫
服务器
组装
微信
尝鲜
视频
体验
cpu
查看
温度
server
浏览
身份验证
authenticator
迁移
手机
webdriver
微博
selenium
系统启动
固件
编译
宅家
坑记
屏幕
动手
硬件加速
nginx
quic
抢先
最近发表
- Chrome 控制台 DevTools failed to load SourceMap 警告的消除方法
- Mac 关闭 Microsoft 自动更新
- Mac 登录 App Store 出现“发生了未知错误”的解决方法
- 老笔记本改造为无风扇静音主机方案
- 自己组装21瓦低功耗家庭爬虫、文件、web服务器
- 微信视频号尝鲜体验
- Ubuntu/Debian 查看CPU温度的方法
- 在Ubuntu/debian Server 系统使用Chrome 无头浏览模式
- 换手机后 Google 身份验证器 Google Authenticator 数据迁移的简单方法
- 使用Golang selenium WebDriver 自动登录微博
- 在 Ubuntu 或其它 GNU/Linux 系统下安装 Debian
- Mac 下制作 USB ubuntu/debian 系统启动、安装盘的几种方法
- ubuntu/debian 下自行编译 OpenWRT 固件
- 宅家自己动手换手机屏幕掉坑记
- 路由 UBNT ER-X 官方固件升级及开启硬件加速的方法
- 在 Nginx 和 Golang web 上抢先体验 QUIC
最近浏览
- SAE 上还是使用KVDB 方便
- SAE 正式支持 Memcached 了
- Openwrt 使用USB 4G 上网卡共享网络
- Golang里的类型断言及注意问题
- 用python 实现XOR 加密解密的方法
- Openwrt 路由上开启BBR
- 神奇:google、必应、百度三大翻译PK,百度出奇制胜!
- go json 解析速度测试
- 在 Ubuntu 或其它 GNU/Linux 系统下安装 Debian
- UBNT ER-X 变砖 tftp 修砖记
- 一款轻量级的基于SAE Python的博客诞生了
- Linux 系统永久设置ulimit
- Golang 服务之坑:too many open files
- js实现浏览器全屏方法
- 使用caddy 快速部署多个https 网站
- Spotify开源的Python图表生成库chartify