位置: 编程技术 - 正文

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

  • 电子设备租赁费专票税率
  • 计税基础怎么算
  • 基金份额股权转让
  • 应收账款资金占用费公式
  • 个税申报数据有误,如何快速更正
  • 出口结汇必须要开票吗
  • 企业收到银行汇票退回的多余款项
  • 发票勾选比账上多
  • 网银发工资怎么增员的
  • 进项和销项税额需要结转吗
  • 货物运输代理费用会计分录
  • 发现账实不符,第一件事就是要干嘛?
  • 冲减留抵税会计分录
  • 银行转账短信提醒还要收费吗
  • 支付给银行的借款利息属于什么会计要素
  • 购买方和销售方一样可以报销吗
  • 装修改造增值税税率
  • 建筑企业在四库一平台找不到
  • 建筑业预征缴纳税款
  • 什么叫统借统还业务
  • 银行承兑汇票没有提示付款
  • 融资租赁增值税优惠政策
  • 在标题栏显示完整页面
  • 记帐凭证由谁填制
  • php strrchr
  • 个体户未达起征点需要申报吗
  • 未按规定采取预防措施,导致发生严重突发事件的
  • html的论文
  • php fopen读取文件
  • php图片生成视频
  • 前端解决跨域问题的代理
  • vue backbone
  • uniapp获取手机通讯录
  • webpack打包步骤
  • react5
  • php读写xml
  • 纳税人有什么义务
  • 发票入账怎么做分录
  • 信托保障基金怎么赎回
  • 销售旧货物的增值税
  • 试生产期间发生事故后重新
  • 公司代买社保怎么收费
  • 房地产企业年报数据
  • 季度利润表中的利润总额
  • 增值税是否计入在建工程
  • 有限合伙企业中谨慎有限合伙人的应当
  • 合同约定合同期限自动顺延
  • 财政补贴的政策
  • 购买汽车的工本费如何入账
  • 小微企业营业外收入二级科目怎么
  • 固定资产出售账面价值计入什么科目
  • 小规模公司一般开什么发票
  • 培训费做什么会计分录
  • 公司房租收据可以入账吗
  • 私营公司固定资产怎么查
  • 一些文件未注册怎么删除
  • win 10如何安装
  • windows如何创建桌面快捷方式
  • 怎样取消开机磁盘自动检查
  • win7系统安装完后启动不了
  • win8.1无法启动怎么办
  • Win10 Mobile 10549中Cortana电池消耗很大该怎么办?
  • linux calloc
  • centos中如何查看ip地址
  • mac使用命令
  • w8系统怎么连接投影仪
  • w10怎么创建此电脑
  • unity双击
  • css制作排行榜
  • linux修改磁盘格式指令
  • javascript要学到什么程度
  • shell脚本用法
  • 完美世界3v3
  • python的基础代码
  • javascript面向对象精要
  • 深圳市福田区税务局电话
  • 国家纳税查询系统
  • 地税局一般几点下班
  • 国家税务总局郴州
  • 小规模纳税人销售自己使用过固定资产
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设