位置: 编程技术 - 正文

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

  • 增值税申报表上的销售收入
  • 简易计税是什么意思?
  • 融资租赁租出的固定资产需要计提折旧吗
  • 清包工可以有一部分小料吗
  • 如何在电子税务局开具全电发票
  • 负数发票跨月怎么重开
  • 收到分包工程发票怎么做分录
  • 递延收益摊销包含哪些
  • 一般纳税人注销公司麻烦吗
  • 电子发票怎么红冲步骤视频
  • 金融保险定义
  • 加油的普票可以抵扣进项税吗
  • 个人所得税0元算不算缴税
  • 建筑业预缴税款怎么退税
  • 企业收到税前投资分红如何缴纳增值税?
  • 员工可以一起辞职吗
  • 制造费用主要包括哪些内容
  • 在win10系统中,如何限制孩子玩原神游戏
  • 未分配利润是怎么算出来的
  • 一般纳税人的月报,季报年报
  • 刚毕业的学生可以买学生票吗
  • PHP:xml_get_current_line_number()的用法_XML解析器函数
  • igfxext.exe
  • ixapplet.exe - ixapplet是什么进程 有何作用
  • 待摊费用从当月摊销还是下月摊销
  • 收到员工罚款分录怎么记账
  • bc2.exe
  • 印花税哪里买
  • 递延所得税资产借贷方向
  • php trim函数
  • 递延收益会计科目核算什么内容
  • vue中的echarts
  • thinkphp apidoc
  • 防洪费属于税金及附加吗
  • 报税金额和开票统计不一致
  • db2入门教程
  • 什么叫python的开发环境
  • 开发区政府退税政策合法吗
  • 小微企业买商品房怎么买
  • 进销存的原理
  • sql2008还原
  • sqlserver数据导入mysql
  • 现金等价物的特征是
  • 事业单位出售废品流程
  • 材料退库的流程
  • 固定资产进项税率
  • 实物返利的税务处理
  • 垫款报销
  • 委托加工合同如何签订
  • 预付账款怎样做会计分录
  • 老板出差带礼物给员工的说说
  • 政府返税计入什么科目
  • 受托开发软件一般做什么
  • 公司建账初期做账怎么做
  • 物业公司代业主委员会收公共收益怎么开发票
  • 年初要新建帐套吗
  • 建账前应该考虑哪些问题
  • 企业应该设置哪些部门
  • sql server 数学函数
  • ubuntu中怎么安装vscode
  • xp系统开机一直在启动界面
  • 活动目录管理工具
  • ubuntu无线网卡怎么用
  • freebsd怎么样
  • gentoo linux优点
  • 电脑双系统删除一个系统的步骤
  • Win10无法获取ipv4
  • unity开发3a
  • [置顶]bilinovel
  • python jsondecodeerror异常捕获
  • bootstrap入门教程
  • js数组添加元素的方法
  • Metaio in Unity3d 教学--- 一. 搭建环境,运行官方案例
  • java项目怎么变成web项目
  • unity3d有什么用
  • python的了解
  • 买药开税票多少税率
  • 什么是城建税和土地税
  • 出口退税的汇率按什么时候的汇率
  • 开电影院有哪些要求
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设