python 异步模式操作文件 aiofiles库 简介

目录

线程开启文件读取异步模式

使用已编写好的第三方插件-aiofiles,支持异步模式

安装方法

打开文件

迭代,Asynchronous iteration

插件可支持的属性

参考


平常使用的file操作模式为同步,并且为线程阻塞。当程序I/O并发次数高的时候,CPU被阻塞,形成闲置。现在我总结下目前python3.6以后的异步使用文件解决方案:

线程开启文件读取异步模式

用线程(Thread)方式来解决。硬盘缓存可以被多个线程访问,因此通过不同线程访问文件可以部分解决。但此方案涉及线程开启关闭的开销,而且不同线程间数据交互比较麻烦。

from threading import Thread

for file in list_file:
     tr = Thread(target=file.write, args=(data,))
     tr.start()

使用已编写好的第三方插件-aiofiles,支持异步模式

使用aio插件来开启文件的非阻塞异步模式。

安装方法

pip install aiofiles

这个插件的使用和python原生open 一致,而且可以支持异步迭代:

打开文件

import aiofiles
async with aiofiles.open('filename', mode='r') as f:
    contents = await f.read()
	print(contents)
	'My file contents'

迭代,Asynchronous iteration

import aiofiles
async with aiofiles.open('filename') as f:
    async for line in f:
        print(line)

插件可支持的属性

插件和file的api属性一样

  • close
  • flush
  • isatty
  • read
  • readall
  • read1
  • readinto
  • readline
  • readlines
  • seek
  • seekable
  • tell
  • truncate
  • writable
  • write
  • writelines

参考

aiofiles:https://github.com/Tinche/aiofiles/
asyncio filesystem进展:https://github.com/python/asyncio/wiki/ThirdParty#filesystem

  • 0
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值