位置: 编程技术 - 正文

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

  • 某煤矿将自采原煤用于投资的业务应缴纳资源税
  • 增值税进项发票网上勾选平台
  • 现金流量表中的现金即为货币资金
  • 资产负债表试算平衡表是什么
  • 合作建房的土地出让金在土地增值税中可以加计扣除嘛
  • 对方公司开发票我方未付款如何做分录?
  • 第三方佣金及成本还是费用
  • 财政拨款的事业单位有哪些
  • 原材料验收的重要性
  • 保证金算费用吗
  • 计提企业所得税会计分录怎么做
  • 简易计税核算方法有哪些
  • 增值税季度不超过30万怎么填表
  • 公司账上的存货是怎么来的
  • 金融性负债总额是什么
  • 公司必须购买税控设备吗
  • 购进的货物用于赠送
  • 公益性捐赠增值税申报表怎么填
  • 企业向个人借款是否交印花税
  • 企业所得税法如何确认应税收入
  • 苹果电脑怎么切换中英文
  • neoCapture.exe - neoCapture是什么进程 有什么用
  • php timestamp
  • 厂家赠送的原材料怎么入账
  • 发生错误的原始凭证包括
  • php imagick
  • yolo xml转txt
  • 应收票据确认坏账怎么处理
  • python大作业小游戏
  • echarts中的legend能被监听吗
  • 作为大学生你能为国家安全贡献哪些力量论文
  • vue viewui
  • 购物卡怎么开发票比较好
  • 企业如何利用期货对冲风险怎么操作
  • 补发工资账务处理
  • 现金零星支出大还是小
  • python包发布
  • mongorepository排序
  • 企业为职工支付的补充医疗保险费
  • 小规模纳税人企业所得税优惠政策最新2023
  • 金税四期监控什么
  • 固定资产折旧的计算方法
  • 材料的采购成本构成
  • 收到发票未抵扣,收票方也可以开红字信息表吗?
  • 冲回上年度费用分录
  • 公司没开户需要做账吗怎么做
  • 会计收入的定义和分类
  • 怎么怎么恢复
  • sql2005定时备份数据库
  • myeclipse连接mysql要装软件吗
  • 电脑开机一直显示xp
  • win10怎么关闭防火系统
  • linux系统中touch
  • win10系统如何删除账户
  • 电脑系统重装win8
  • 如何设置让自己手机号处于关机状态
  • 如何修改apache
  • win8系统怎么到桌面
  • linux ora11g安装教程
  • Windows7 64位系统如何添加打印机图文教程
  • win10多任务视图不排序怎么设置
  • 安卓textview设置文本
  • android游戏开发框架
  • Unity3D游戏开发标准教程吴亚峰于复兴人民邮电出版社
  • Python 中urls.py:URL dispatcher(路由配置文件)详解
  • android检测权限是否开启
  • shell脚本怎么进入指定目录
  • javascript学习指南
  • 使用简单工厂模式的好处
  • python排序算法比较
  • python数据类型有
  • python里list
  • springmvc返回json格式的注解
  • 非营利组织税务处理
  • 怎么撤销税务三方协议
  • 职工教育经费可以结转吗
  • 河南林州在哪三省交界处
  • 娱乐圈的收入高得离谱
  • 村纪检书记主要工作
  • 集美区区委书记什么级别
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设