真的量一次

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

(每道题开头都有同一段:六个来源 SOURCES,每项是 (名字, 要等的秒数, 字节数);fetch(name, wait, size) 睡 wait 秒后交回 size——「等」的时候别人能干活。)

time.perf_counter 量顺序版和线程版各花多久。时间每次略有不同,所以只比大小:顺序版是否超过 0.3 秒、线程版是否不到 0.2 秒、线程版是否不到顺序版的一半:

import threading, time

SOURCES = [("首页", 0.05, 1200), ("新闻", 0.08, 3400), ("图片", 0.03, 8800), ("视频", 0.10, 20000), ("论坛", 0.06, 2600), ("天气", 0.02, 300)]

def fetch(name, wait, size):
    time.sleep(wait)
    return size

def serial():
    for s in SOURCES:
        fetch(*s)


def threaded():
    ts = [threading.Thread(target=fetch, args=s) for s in SOURCES]
    for t in ts:
        t.start()
    for t in ts:
        t.join()


def time_it(fn):
    t0 = time.perf_counter()
    fn()
    return time.perf_counter() - t0

s = time_it(serial)
t = time_it(threaded)
print(str(s > 0.3) + "/" + str(t < 0.2) + "/" + str(t < s / 2))
提交你的答案
请登录后提交答案。
去登录
代码编辑器
Ctrl + Enter 运行
本次输入:
输出:

                        
👩‍🏫
AI
💬 题目评论

全部评论