python - 打开新线程运行请求和异步 IO 的 aiohttp.ClientSession 之间的时间成本差异?
问题描述
我知道 aiohttp 支持异步 IO,所以它完全是单线程的。但是 run_in_executor 有点启动一个新线程。但是我测试了一个有 1000 次下载的任务,看起来差异是相当微不足道的。但我认为 aiohttp 应该更快,因为线程成本。我做错什么了吗?
async def get(url):
async with aiohttp.ClientSession() as session:
async with session.get(url) as resp:
print(url, resp.status)
print(url, await resp.text())
loop = asyncio.get_event_loop()
tasks = [
get("http://www.google.com"),
get("http://www.google.com")
]
loop.run_until_complete(asyncio.wait(tasks))
loop.close()
async def get_via_thread(url):
loop = asyncio.get_event_loop()
try:
response = await loop.run_in_executor(None, functools.partial(requests.get, url=url))
解决方案
推荐阅读
- django - 为什么 Nginx 找不到 Django 的静态文件?
- wordpress - 从 wordpress 中删除尾部斜杠
- qt - QML 和 QGraphicsScene
- android - 如何使用 CrossRef Junction 在 Android Room 中建模多对多关系
- powershell - 每分钟复制和重命名一个文件
- excel - 查找包含数据的最后一列并在该列之后添加数据
- sql-server - 在 Value 子句中命名项目以提高可读性
- spring - 使用 XHR 流时通过 SockJs 为 STOMP 确定用户
- html - 验证器给出杂散的开始标记错误,但我没有脚本,除了 !DOCTYPE 之外什么都没有
- javascript - 如何在 js 正则表达式中以相同的方式处理不同的撇号格式?