首页
关于
友链
Search
1
ESXI 一些功能调整
443 阅读
2
SoftEther 客户端篇
423 阅读
3
天翼云网关3.0/4.0超管密码
414 阅读
4
SoftEther 服务端篇
308 阅读
5
远程桌面rustdesk使用说明
255 阅读
默认分类
代码相关
vue
html
python
系统
数据库
docker
安卓
软件分享
杂七杂八的工具
游戏分享
游戏相关
我的家庭影院
Ai
登录
Search
标签搜索
python
esxi
git
SoftEther
linux
apscheduler
在线
rclone
Ubuntu
list
列表
idm
激活码
Charles
pdf
免安装
鲁大师
图片查看器
蜂蜜浏览器
honeyview
哥特式
累计撰写
98
篇文章
累计收到
16
条评论
首页
栏目
默认分类
代码相关
vue
html
python
系统
数据库
docker
安卓
软件分享
杂七杂八的工具
游戏分享
游戏相关
我的家庭影院
Ai
页面
关于
友链
搜索到
1
篇与
的结果
2022-07-18
python async 使用,介绍
程序在执行 IO 密集型任务的时候,程序会因为等待 IO 而阻塞,而协程作为一种用户态的轻量级线程,可以帮我们解决这个问题说人话:说白了就是,当协程遇到io操作而阻塞时,立即切换到别的任务,如果操作完成则进行回调返回执行结果,提高了效率,同时这样也可以充分利用 CPU 和其他资源,这就是异步协程的优势,并且协程本质上是个单进程,相对于多进程来说,无需进程间上下文切换的开销,无需原子操作锁定及同步的开销,编程模型也非常简单。async/await 是python3的新特性,可以进行协程运行。个人将他理解成多线程。实现代码如下import time import asyncio async def SleepTime(ts): if ts == 3: await asyncio.sleep(10) #当ts等于3的时候,让挂起的时间为10s,其他的按正常挂起,验证协程时间。 else: await asyncio.sleep(ts) async def main(loop): tasks = [] for i in range(6): print("time begin %s"%i) tasks.append(loop.create_task(SleepTime(i))) #相当于开启了一个线程 print("sleep time end %s"%i) print("*********************") await asyncio.wait(tasks) #等待所有的任务完成。 if __name__ == "__main__": # main() print("begin test") tb = time.time() print(tb) #记录当前时间 loop = asyncio.get_event_loop() loop.run_until_complete(main(loop)) loop.close() print(time.time()-tb) #记录结束时间 print("end")` 运行结果如下,没有用到协程的结果,会依次执行,总耗时会大于10秒。begin test 1602423299.3981705 time begin 0 sleep time end 0 ********************* time begin 1 sleep time end 1 ********************* time begin 2 sleep time end 2 ********************* time begin 3 sleep time end 3 ********************* time begin 4 sleep time end 4 ********************* time begin 5 sleep time end 5 ********************* 10.005681276321411 end [Finished in 10.2s]
2022年07月18日
142 阅读
0 评论
0 点赞