位置: 编程技术 - 正文

Python中使用asyncio 封装文件读写(python asyncio)

编辑:rootadmin

推荐整理分享Python中使用asyncio 封装文件读写(python asyncio),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:python asyncio await,python asyncio,python的async await,python的async await,python asyncio,python asyncio,PYTHON中使用什么关键字可以在当前程序中,python asyncio,内容如对您有帮助,希望把文章链接给更多的朋友!

前言

和网络 IO 一样,文件读写同样是一个费事的操作。

默认情况下,Python 使用的是系统的阻塞读写。这意味着在 asyncio 中如果调用了

会阻塞事件循环。

本篇简述如何用 asyncio.Future 对象来封装文件的异步读写。

代码在 GitHub。目前仅支持 Linux。

阻塞和非阻塞

首先需要将文件的读写改为非阻塞的形式。在非阻塞情况下,每次调用 read 都会立即返回,如果返回值为空,则意味着文件操作还未完成,反之则是读取的文件内容。

阻塞和非阻塞的切换与操作系统有关,所以本篇暂时只写了 Linux 版本。如果有过 Unix 系统编程经验,会发现 Python 的操作是类似的。

Python中使用asyncio 封装文件读写(python asyncio)

Future 对象

Future 对象类似 Javascript 中的 Promise 对象。它是一个占位符,其值会在将来被计算出来。我们可以使用

result = await future

在 future 得到值之后返回。而使用

future.set_result(xxx)

就可以设置 future 的值,也意味着 future 可以被返回了。await 操作符会自动调用 future.result() 来得到值。

loop.call_soon

通过 loop.call_soon 方法可以将一个函数插入到事件循环中。

至此,我们的异步文件读写思路也就出来了。通过 loop.call_soon 调用非阻塞读写文件的函数。若一次文件读写没有完成,则计算剩余所学读写的字节数,并再次插入事件循环直至读写完毕。

可以发现其就是把传统 Unix 编程里,非阻塞文件读写的 while 循环换成了 asyncio 的事件循环。

下面是这一过程的示意代码。

asyncio 的 coroutine对象 与 Future对象使用指南 coroutine与Future的关系看起来两者是一样的,因为都可以用以下的语法来异步获取结果,result=awaitfutureresult=awaitcoroutine实际上,coroutine是生成器函数,它

基于asyncio 异步协程框架实现收集B站直播弹幕 前言虽然标题是全站,但目前只做了等级top直播间的全天弹幕收集。弹幕收集系统基于之前的B站直播弹幕姬Python版修改而来。具体协议分析可以看上

python开发环境PyScripter中文乱码问题解决方案 PyScripter看起来还是挺不错的一个pythonide环境:PyScripter2.6.0.0python3.4问题:PyScripter有个小坑,打开文件后中文都成了乱码。在PyScripter中新建的文件中文可

标签: python asyncio

本文链接地址:https://www.jiuchutong.com/biancheng/385413.html 转载请保留说明!

上一篇:Python 如何访问外围作用域中的变量(python 如何访问数据库)

下一篇:asyncio 的 coroutine对象 与 Future对象使用指南

  • 怎么算一般纳税人
  • 递延所得税负债怎么算
  • 预缴增值税附加税需要计提吗
  • 税务金三系统是什么?
  • 装卸费发票怎么备注
  • 跨年度进项税额转出怎么申报
  • 月底计提分录
  • 税金及附加包括个人所得税吗
  • 公司的基建部门是做什么的
  • 企业收入进私户怎么做账
  • 公司委托其他公司代缴社保合法吗
  • 国税申报填错了怎么办
  • 发票停票会自动恢复吗
  • 4s店开业有什么优惠
  • 税控盘上报
  • 一个法人可以办几个公司
  • 财务兼职怎么算工资
  • win11更新失败怎么办
  • 公益性捐赠税前扣除资格认定程序
  • 常见的电脑系统类型
  • 产负债表的负债项目,显示了企业所负担债务的
  • php有很多流行的mvc框架,这些框架可以
  • 企业职工工伤赔偿标准
  • 做胃镜多少钱了
  • mcshield.exe是什么进程
  • PHP:pg_result_seek()的用法_PostgreSQL函数
  • 将款项汇往外地采购专用账户会计分录
  • 金融保险业的营业税率为
  • 应交营业税计算公式
  • 小规模纳税企业在应交增值税明细科目
  • h5调用海康摄像头
  • json与json字符串
  • webpack常用属性
  • php递归函数桃子一天吃一半
  • php ajax 实现
  • 哪些费用发票可以抵扣企业所得税
  • 预缴税款从哪里查
  • 进销存表格模板明细账
  • 购买加油卡如何做会计分录
  • mongodb操作语句
  • 超出python用什么
  • 小企业会计准则和一般企业会计准则的区别
  • 跨月发票红字冲销有影响吗
  • 工程用车折旧年限
  • 什么样的差旅费津贴可以税前扣除
  • SQL查询数据库中表的某一列
  • 个体工商户是什么意思
  • 工程物资怎么入账成本
  • 职工基本医疗保险怎么用
  • 企业筹办费计入什么科目
  • 技术服务收入包括哪些
  • 车辆理赔款如何入账
  • 仓库费用计入什么科目
  • 投资其他公司做什么科目
  • 本年收益属于什么科目
  • 冲减以前年度未开票收入开票如何申报小规模纳税人
  • 记账凭证如何填写明细科目
  • 微软终止代码大全
  • mac系统命名规律
  • linux系统rm -rf
  • win8不能联网
  • windows安装软件需要管理员权限
  • 为什么电脑显示windows10即将终止服务
  • 如何在linux中添加环境变量
  • xtemplate node.js 的使用方法实例解析
  • 安卓开发教学视频
  • 贴吧热门评论
  • win10如何使用命令
  • 原生js实现ajax步骤
  • unity ulua
  • java中的多态性
  • unity ugui教程
  • jquery实现点击按钮
  • 农村集体土地承包法
  • 北京24小时税务自助机
  • 手机陌陌卸载还有记录吗
  • 北京市注册税务师
  • 普通手写发票税点多少
  • 花店会计主要做什么
  • ecco made in china
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设