时间模型

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

本节的东西:

model(tasks)   时间模型:每条线程 (算, 改) 两段耗时;粗锁全串行 = Σ(算+改),细锁算并行改串行 = max(算) + Σ改;交回 (粗, 细)
timed(fn, workers, work)   开 workers 条线程各跑 fn(work),交回耗时
coarse(work)   sleep(work) 关在锁里再改 total;fine(work)   sleep 在锁外,只把改关在锁里

三条线程各「算 3 秒、改 1 秒」,四条线程各「算 5、改 1」,看粗锁和细锁的总时间:

def model(tasks):
    """tasks: 每条线程 (算, 改) 两段耗时。粗锁:全串行 = Σ(算+改);细锁:算并行、改串行 = max(算) + Σ改。交回 (粗, 细)。"""
    coarse = sum(a + b for a, b in tasks)
    fine = max(a for a, b in tasks) + sum(b for a, b in tasks)
    return coarse, fine
print((str(model([(3, 1)] * 3)) + "/" + str(model([(5, 1)] * 4))).replace(" ", ""))
提交你的答案
请登录后提交答案。
去登录
代码编辑器
Ctrl + Enter 运行
本次输入:
输出:

                        
👩‍🏫
AI
💬 题目评论

全部评论