并发取一批的总大小

👁️ 3 人浏览 💬 0 人评论 ❤️ 添加收藏

(每道题开头都有同一段:fetch(url) 是个协程,本机「请求」、不连网,交回 url 的长度当「响应大小」;total_size(urls) 用 gather 并发取、求和;sizes(urls) 交回每个大小的列表(按提交顺序)。)

并发「请求」 "ab"、"cde"、"f",打印响应大小之和:

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(["ab", "cde", "f"]))
提交你的答案
请登录后提交答案。
去登录
代码编辑器
Ctrl + Enter 运行
本次输入:
输出:

                        
👩‍🏫
AI
💬 题目评论

全部评论