补全:按提交顺序收一批
(每道题开头都有同一段:上面的池小工具。)
贯穿全条的池小工具(标准库 ThreadPoolExecutor:固定 workers 个线程复用):
pool_sum(fn, args, workers) 池对每个参数跑 fn,交回所有结果之和(和与顺序无关,确定)
pool_map(fn, args, workers) map 按提交顺序回结果(顺序确定)
one_future(fn, x, workers) 提交一个任务,交回它的 Future 的 result()
submit_all(fn, args, workers) 提交全部,按提交顺序 result() 收结果
pool_peak(ntasks, workers) = min(ntasks, workers) 一次最多几个在跑
reuse(ntasks, workers) = (workers, ntasks) 池建几个线程 / 手写要建几个补全 collect(xs):用 workers=3 的池对 xs 每个 submit dbl,把 Future 按提交顺序存起来,逐个 result() 交回列表。看 [1,2,3,4] 的结果。
全部评论