并发爬一批的总大小
(每道题开头都有同一段:fetch(url) 是个协程,本机「请求」、不连网,交回 url 的长度当「响应大小」;total_size(urls) 用 gather 并发取、求和;sizes(urls) 交回每个大小的列表(按提交顺序)。)
并发「爬」 "aa"、"bbbb"、"cc",打印总大小:
import asyncio
async def fetch(url):
"""本机"请求":不真连网,交回 url 的长度当作"响应大小"。await 让出控制。"""
await asyncio.sleep(0)
return len(url)
async def _gather_fetch(urls):
return await asyncio.gather(*[fetch(u) for u in urls])
def total_size(urls):
"""并发"请求"一批 url,交回响应大小之和(确定)。"""
return sum(asyncio.run(_gather_fetch(urls)))
def sizes(urls):
"""并发"请求"一批 url,交回每个响应大小的列表(按提交顺序,确定)。"""
return asyncio.run(_gather_fetch(urls))
print(total_size(["aa", "bbbb", "cc"]))
全部评论