位置: 编程技术 - 正文

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

  • 印花税应计什么科目?
  • 计算应纳税所得额时 不得扣除支出有哪些
  • 个纳税人申报
  • 交强险怎么查
  • 收入与支出的差异
  • 利息调整的计算公式
  • 小规模纳税人开具不动产发票税率
  • 销售增长率在报表上怎么看出来
  • 应付票据的处理
  • 或有负债怎么入账
  • 个人借款利息是多少才合法
  • 国有企业业务招待费管理办法
  • 多缴所得税返还现金流
  • 民办非企业收入会计分录
  • 泡菜增值税率
  • 增资缴纳印花税的计算公式?
  • 代开专用发票缴纳的增值税需要计提吗?
  • 出租房屋房产税怎么算
  • 当期应税销售收入是含税还是不含税
  • 工商年检社保缴费基数按什么标准填
  • 会计学堂值得购买吗
  • 应收账款的贷方反映
  • 超市收取的返利的税收处理
  • 旅行社代订机票发票报销
  • 企业发生的哪些业务可以使用简易计税法
  • 个人转租房子
  • 出口退税的账务关键是什么
  • 股东认缴和实缴的会计分录
  • 飞鱼星路由器信号有点差怎么办
  • 增值税及附加税是什么意思
  • 小微企业财务报表报送时间
  • 多计提的增值税和附加税怎么冲减?
  • 支付宝支付凭证图片
  • 电脑qq音乐设置在哪里
  • 修改系统帐户用什么软件
  • php中strcmp函数
  • cpu的保养有哪些
  • rteng7.exe - rteng7是什么进程 有什么用
  • 销售使用过的固定资产3%减按2%
  • php获取ipv6地址
  • yolov5标签格式
  • php的mysql_query
  • 工会经费计税依据是上年工资还是当年工资
  • 部门差旅费预算表
  • 承租方的物品如何处理
  • 上月附加税计提多了怎么办
  • 支付劳务费未开具发票
  • 定期定额怎么申报个人所得税
  • 拆迁补偿款的组成
  • 个人所得税征税对象是什么
  • 小规模纳税人转一般纳税人当月如何申报
  • 无形资产的累计折旧
  • 财政补助收入怎样申报企业所得税
  • 买车险要先付钱再上牌吗
  • 展览门票收入按什么征税
  • 普票冲红需要收回原来的发票吗
  • 青苗赔偿管理办法
  • 高新技术企业退出机制
  • mysql按时间查询
  • 用Autoconf检测MySQL软件包的教程
  • centos7配置tomcat
  • 强行卸载系统应用
  • mac os怎么删除用户
  • wrsvn.exe是什么
  • winxp程序和功能在哪里
  • winxp如何进入bios
  • 怎么在手机上买股票开户
  • Win7系统如何打开摄像头
  • 拦截器 aop
  • linux查看内存型号与数量
  • 开源安卓app
  • javascript含义
  • 安卓手机电驴
  • android studio绑定按钮
  • 稳岗补贴是否需在企业所得税汇算时调增
  • 缴纳车辆购置税的会计处理
  • 上海嘉定南翔房子
  • 遂宁市国家税务局
  • 浙江省网上税务局总分机构变更流程
  • 2021年房产税收新政
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设