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 条评论
暂无评论