Python 打开新线程运行请求与异步IO的aiohttp.ClientSession之间的时间成本差异?
我知道aiohttp支持异步IO,所以它是完全单线程的。但是run_in_执行器会启动一个新线程。但是我测试了一个有1000次下载的任务,看起来差别不大。但我认为aiohttp应该更快,因为线程成本更高。我做错什么了吗Python 打开新线程运行请求与异步IO的aiohttp.ClientSession之间的时间成本差异?,python,asynchronous,python-asyncio,aiohttp,Python,Asynchronous,Python Asyncio,Aiohttp,我知道aiohttp支持异步IO,所以它是完全单线程的。但是run_in_执行器会启动一个新线程。但是我测试了一个有1000次下载的任务,看起来差别不大。但我认为aiohttp应该更快,因为线程成本更高。我做错什么了吗 async def get(url): async with aiohttp.ClientSession() as session: async with session.get(url) as resp: print(url, r
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))
但是我测试了一个有1000次下载的任务,看起来有区别
这是相当微不足道的
问题可能在您的基准中的某个地方。很难说确切的位置,因为您没有提供复制:
例如,您可以查看OP在何处尝试比较线程和协同程序,但没有得到任何差异,以及在何处解释了此结果并提供了修复程序。wow谢谢。我实际上没有看到这个问题,但这个答案回答得很好。看来我的假设是对的,只是我的测试需要改进。