位置: 编程技术 - 正文

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对象使用指南

  • 发票开具就能做账了吗
  • 外聘人员需要申报个税吗
  • 购进货物未取得增值税专用发票可以抵扣进项税额吗
  • 新办企业一定要社保登记吗
  • 盘盈资产开具发票是否符合规定
  • 公司转让股权要去税务吗
  • 行业协会需要办理税务登记证吗
  • 固定资产计提折
  • 短期理财的门槛
  • 取得进项票当月未认证
  • 建筑业异地预缴税款的会计分录
  • 增值税进行未认定怎么办
  • 汽车租赁公司怎么赚钱
  • 劳务派遣企业如何认定
  • 文化事业建设费计入什么科目
  • 应向客户收取的出租包装物租金
  • 生产成本属于什么会计要素
  • 福利费不需要发票记账吗
  • 长期股权投资的账务处理
  • 增发股票会计科目
  • 建筑公司分包
  • 咨询服务费需要交印花税吗
  • 预付账款退款怎么做会计分录
  • 笔记本thinkbook14
  • 公司名称变更重新刻章
  • 最早的拍照手机是哪一年
  • php实现的任意进程函数
  • 贴现会不会损害所有者权益
  • 租入经营用房屋的改良支出
  • 暂估入账的原材料有成本差异吗
  • 研发费用如何加计扣除何时申报
  • 买入返售金融资产和卖出回购金融资产
  • 图文详解水的画法
  • service运行命令
  • 销售佣金分录
  • 施工企业的人工费占比
  • 织梦技巧
  • 库房食品过期报告怎么写
  • 不动产登记违建处理办法
  • 什么样的差旅费津贴可以税前扣除
  • 企业的财务报表不包括
  • 股份有限公司个人股份
  • sql server索引怎么用
  • 外购免税农产品用于职工福利
  • 企业给员工交公积金怎么办理
  • 人工费用和制造费用的约当产量
  • 退休人员的返聘合同
  • 奖励促销策略
  • 代销手续费如何交增值税m
  • 政府补助都有哪些类型
  • 企业收到退回的银行汇票多余款项时,应作的会计处理有
  • 异地出租房屋
  • 当月无销售要计提工资吗
  • 付款后没有发票怎么办
  • 进项发票已经认证,对方作废了
  • 发票怎么领用具体流程
  • 折现率的选择主要是根据什么来判断
  • vista ui
  • linux命令ethtool
  • sendmailadmin
  • 戴尔笔记本电脑开不了机
  • 开机后cpu占用高
  • xp系统怎么卸载驱动程序
  • windows xp系
  • win10注销系统会怎么样
  • windos撤销
  • 批处理书
  • android自定义属性详解
  • python 二叉树
  • vue wepack
  • javascript getattribute
  • Python虚拟环境创建
  • unity mesh编程
  • BootStrap iCheck插件全选与获取value值的解决方法
  • android设计模式与最佳实践 pdf
  • 维修基金交了多少钱怎么查
  • 重庆办理4050社保需要什么材料
  • 成都市武侯区地址
  • 新车缴纳车船税减免性质是什么
  • 国企残疾职工安置
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设