python 利用aiofiles库异步读取文件

1、说明

python中的异步操作就要用到asyncio异步框架。这样跟asyncio搭配用的库就有些要求,以requests为例说明。

如果你要写一个并发网络请求程序,你正好选择了asyncio+requests来实现。那么糟糕的是这样并不会实现并发,原因在于requests是一个阻塞库,即发出请求返回结果之前线程是阻塞的,asyncio的事件循环无法运行下一个任务。

所以,你需要选择一个非阻塞网络库,aiohttp就可以,从名字aio就可以直到它是一个异步非阻塞库了。

同理,想要异步并发的读取文件,那么应该选择asyncio + aiofiles。而不是直接async with open……,这样会报错。

2、示例

ps:首先安装aiofiles库,pip install aiofiles

import aiofiles
import asyncio

async def read_file(filename):
    async with aiofiles.open(filename, mode='r', encoding='utf-8') as file:
        contents = await file.read()
        print(contents)

asyncio.run(read_file('file_path.txt'))

发表评论

评论列表,共 0 条评论

    暂无评论