位置: 编程技术 - 正文

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

  • 资产负债率高说明偿债能力怎么样
  • 递延所得税资产会计处理全过程
  • 应付职工薪酬应发数
  • 公司之间往来款需要开收据吗
  • 2个公司的法人是谁
  • 财务报表分析五种方法
  • 购进货物未取得增值税专用发票可以抵扣进项税额吗
  • 建筑劳务公司开劳务发票税率是多少
  • 土地增值税清算全流程实战案例
  • 坏账已核销
  • 电子商务交易成本
  • 补开发票怎么做分录?
  • 固定资产清理增加记哪一方
  • 餐饮刷卡机手续费多少
  • 客户以旧料抵货款账务如何处理?
  • 税控设备可以跨省销售吗
  • 拍卖的房产
  • 网贷公司的印花税怎么交
  • 固定资产的入账价值怎么计算
  • 溢价转让股权的会计处理
  • 退租水电费从押金里扣除
  • 委托加工白酒的计税依据
  • 财付通转款会计分录
  • 发票勾选保存后不提交了能留到下月抵扣吗?
  • 机打发票怎么申请流程
  • 民非提供服务收到的现金怎么算
  • 退回多收款项,提现金,如何做账
  • macOS 11 Big Sur 开发者预览版Beta 9正式推送
  • 农产品进项税额转出怎么算
  • 苹果客服人工24小时
  • 纺织企业成本核算表
  • 免税货物增值税计算公式
  • php 无限级分类
  • uniapp打开h5页面
  • 小规模纳税人报税期是哪几个月
  • 相见恨晚求下联
  • 建造师与建筑师的区别详解
  • ai绘画图片
  • 异地托收承付结算金额起点为
  • 销售后返现怎么算
  • 长期借款利息是流动负债吗
  • 开了红字信息表对方没开红票
  • 资产减值损失应在计算()时扣除
  • 会计信息采集每年都要重新写吗
  • sql分页语句
  • mysql数据库编码
  • persona工具
  • 一般纳税人的商业保险可以开票吗
  • 小规模未达到起征点申报表怎么填
  • 员工借款的定义
  • 去年的成本发票做错了需要补税吗
  • 代理进口货物如何确定增值税纳税人
  • 公司闲置房屋出租合法吗
  • 公司购买黄金送客户可以抵税吗
  • 物业公司付电业费合法吗
  • 软件企业确认收入
  • 预付账款暂估是什么意思
  • 清除sql表内容
  • 在mac上如何使用微信
  • win102020年更新
  • cmos电池没电会有什么故障现象
  • linux的run目录放什么文件
  • win7旗舰版系统激活码
  • win8打开ie
  • win8怎么打开磁盘管理
  • nodejs代码规范
  • 如何用bat删除指定文件
  • jquery父节点
  • 教学实例分析怎么写
  • linux echo echo
  • unity quaternion.angle
  • 简述shell命令提示符的组成
  • textview hint
  • android系统设置
  • 西安市经开区管委会官网
  • 水利建设基金的计提与会计处理
  • 重庆国家税务电子税务局官网登录
  • 个体工商户地税怎么申报
  • 增值税是否在利润表反映
  • 消费税征税环节
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设