补全:限流的下载池
本节的东西:
Gate(n) 最多 n 个同时在里面:Semaphore(n);顺便用一把小锁维护 inside / peak(峰值)
run_gate(n, workers, hold) workers 条线程各进一次 Gate 待 hold 秒,交回峰值补全 pool(n, jobs):用 BoundedSemaphore(n) 让 jobs 里的函数最多 n 个同时跑(每个 job 是 sleep 0.03 的小函数),用 Gate 那样的方式记峰值;交回 (峰值 <= n, 全部跑完的个数)。
全部评论