Python 我可以加速嵌套异步/等待aiohttp代码吗?
如果我在下面的代码中将范围(1)中的Python 我可以加速嵌套异步/等待aiohttp代码吗?,python,asynchronous,async-await,aiohttp,Python,Asynchronous,Async Await,Aiohttp,如果我在下面的代码中将范围(1)中的更改为范围(5)中的,则运行时间大约要长5倍。我希望从并发中得到更好的数字。我是否设置了错误的代码 import asyncio import aiohttp async def fetch(session): async with session.get("http://www.example.com") as res: await res.text() async def foo(session): for i in r
更改为范围(5)
中的,则运行时间大约要长5倍。我希望从并发中得到更好的数字。我是否设置了错误的代码
import asyncio
import aiohttp
async def fetch(session):
async with session.get("http://www.example.com") as res:
await res.text()
async def foo(session):
for i in range(10):
await fetch(session)
async def main(loop):
async with aiohttp.ClientSession(loop = loop) as session:
for i in range(1):
await foo(session)
loop = asyncio.get_event_loop()
loop.run_until_complete(main(loop))
您需要的是它允许并行运行多个协同程序
您将得到如下代码
def main():
# init session
coroutines = list()
for i in range(5):
coroutine = fetch(session) # XXX: mind the fact that there is no await keyword here
coroutines.append(coroutine)
await asyncio.gather(*coroutines)
也许你应该尝试创建一个任务列表而不是一个循环?异步不是并发