位置: 编程技术 - 正文

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

  • 企业出售资产要交增值税吗
  • 在建工程转固定资产需要交税吗
  • 超过认证期的发票能用吗
  • 保理公司发放贷款
  • 发票货物名称前带星号规定
  • 固定资产怎么确定是否减值
  • 预提费用所得税前扣除
  • 房屋租赁后转租合法吗
  • 大额虚开发票做转出税款入什么会计科目?
  • 发票融资贷款应该怎么做账?
  • 营改增后税目税率表
  • 新办企业汇算清缴流程
  • 福利费可以抵扣个税吗
  • 国家电网的发票如何申请邮寄
  • 税前不得扣除的项目
  • 政府土地出让金返还
  • 建筑业异地预缴税款怎么抵扣
  • 其他综合收益是什么类科目
  • 联营和合营的区别共同控制
  • 年终奖个人所得税怎么扣
  • 出纳现金日记账怎么记账
  • 净资产利润率多少算好
  • 资本增值是什么
  • 应收利息和应计利息有什么不同
  • 专利年费应该入哪个科目
  • 出售土地印花税怎么计算
  • 企业免征增值税证明怎么打印
  • 股权转让的会计凭证
  • 建筑公司采购制度和流程
  • 开机要按f1才能进系统
  • win11自动更新卡在94%
  • 微软win11预览版
  • 长期借款还款
  • 公牛牛角
  • web无法运行
  • 海关进口增值税如何入账
  • 个人独资企业是小规模纳税人吗
  • 跨年费用入账
  • php sw
  • php中面向对象
  • 山东省项目
  • 关系代数关系运算
  • 出租设备折旧费用计入什么科目
  • 公司转让债权人怎么办
  • 应收票据包括哪些项目内容
  • 物流货物丢失赔偿按照运费10倍
  • 0税率发票什么意思
  • 企业所得税的营业收入包括营业外收入吗
  • 固定资产加速折旧计算方法
  • 房地产企业增值税预征率
  • 接受捐赠收入作为广告费扣除基数吗
  • 企业成本计算的依据是什么
  • 销售返利的会计分录 东奥
  • 白条入账会计处理
  • 在贫困户入股分红大会上的讲话
  • 主营业务成本借贷方向增减
  • 叉车累计折旧如何结转
  • 旅游费用如何记账科目
  • 单位结算卡和回单卡
  • 企业免征税范围有哪些
  • 一家企业至少要运转几个月以上
  • mysql启动时报1067
  • Mysql主从同步Last_IO_Errno:1236错误解决方法
  • 深入浅出了解啥意思
  • win10预览版和正式版区别
  • linux防御
  • spoolsrv.exe - spoolsrv是什么进程 有什么作用
  • centos更新yum update
  • cocos2dx camera
  • 最新推荐美剧
  • android开发范例实战宝典
  • python,字符串
  • 测验2:python基本图形绘制
  • python27文件夹
  • jquery点击按钮修改表格数据
  • 电子普通发票怎么查验真伪
  • 无经营公司
  • 税务局随机抽查事项清单
  • 蓬莱市税务局
  • 船舶吨税是中央税还是地方税
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设