位置: 编程技术 - 正文

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

  • 保险税优识别码是保单号吗
  • 纳税属于什么会计科目
  • 没有销项购买税金税盘如何做账
  • 出口货物的报关时限为装货的24小时以前
  • 控股子公司注销了可以起诉总公司吗怎么办
  • 连续三个月发烧怎么回事
  • 增值税发票税号0和O
  • 印花税核定征收管理办法
  • 简易征收增值税怎么做账
  • 销项税的抵扣
  • 会计中预付款余额是什么
  • 待报解预算收入计入什么科目
  • 代扣个人社保的账务处理
  • 财产转让所得的纳税义务发生时间
  • 不同组织的区别主要体现在哪些方面
  • 买一送一的增值税如何计算例题
  • 一次性奖金可以分2次发吗
  • 园林绿化公司要交税吗
  • 实收资本印花税属于什么税目
  • 生活支出计入什么科目
  • 付款凭证会计分录怎么写
  • 异地预缴企业所得税会计分录
  • 什么情况增值税专用发票不能抵扣
  • 13个点的税怎么算税金
  • 上个月印花税少计提了怎么办
  • 非营利组织免税收入孳生的银行存款利息
  • 物流企业之间的竞争
  • 工伤赔偿工伤保险超出部分
  • windows打开文件
  • 酒店安装监控费用谁出
  • 资产负债表里的存货怎么算
  • 事业单位政府预算
  • 公司设计费属于什么费用
  • ubuntu系统u盘安装
  • 公司贷款过桥费合法吗
  • 个人独资所得税税率表最新
  • 销售不动产应交的增值税计入
  • au_.exe是什么进程
  • PHP:pcntl_signal()的用法_PCNTL函数
  • 有多种解决方法的问题
  • 蓝湖怎么用的
  • 土地出让金抵减增值税账务处理
  • 前端解决跨域问题的8种方案(最新最全)
  • html制作动画代码
  • 微信多开使用方法
  • lftp shell
  • vue组件教程
  • 超过离线开票限定时间怎么办
  • 利润分配的账务处理会计分录
  • day11-Servlet01
  • 个税 全年累计
  • 进口增值税是什么意思
  • 什么是销项税额转出
  • 同一控制和非同一控制的区别图解
  • 认证失败,未获取到区域信息
  • 企业支付宝能买东西吗
  • 无形资产摊销能加计扣除吗
  • 非营利医疗机构由谁批准
  • 简单谈谈设计与市场的关系
  • mac怎么切换输入法
  • win10系统怎么清理电脑垃圾
  • ubuntu 14.04.6
  • linux中的awk命令详解
  • winXP系统截图
  • windowsxp桌面没有我的电脑
  • 在mac中运行exe
  • 微软开始推送win10
  • virtualbox 虚拟化
  • win8怎么设置桌面图标
  • 5.2光源
  • css div模糊
  • bootstrap入门
  • 又拍云cdn配置
  • 用Python设计一个游戏
  • vue源码是用什么写的
  • .es6文件
  • 单例类python
  • 深圳国税局发票查询
  • 广西发票查询平台
  • 电子税务网没开通怎么办
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设