从现象认调不动的原因
把四种现象和原因配对,打印四个字母: signs = { "worker 加到很多也不快": "A", "worker 太少积压严重": "B"
哪个 worker 数最快
场景:~/调优/日志.txt 记了同一批任务在不同 worker 数下跑的耗时(每行「worker数 耗时毫秒」)。对照表列了八个 worker 数。 任务:找出耗时最短的那个 worker 数,到对照表里查它对应的标记。 可操作范围:只在
IO 任务该调大还是调小
场景:~/调优/说明.txt 描述了任务类型(大量在等网络的 IO 任务 / 纯计算的 CPU 任务)。对照表列了八个做法。 任务:根据任务类型,选出正确的调法(IO 密集:worker 远多于核数;CPU 密集:约等于核数),到对照表里查
同时最多几个在跑
场景:~/调优/跑.py 提交 N 个任务、池 max_workers=M(都在代码里)。对照表列了八个数。 任务:算出一次最多几个任务同时在跑(N 和 M 里少的那个),到对照表里查那个数对应的标记。 可操作范围:只在分给你的这台实验机上
开太多反而慢多少
场景:~/调优/日志.txt 记了两个 worker 数的耗时:一个合适的、一个开太多的。对照表列了八个数。 任务:算出「开太多」比「合适」多花了多少毫秒(两行耗时之差),到对照表里查那个数对应的标记。 可操作范围:只在分给你的这台实验机上
把 worker 数调对
场景:~/调优/跑.py 的 max_workers 写死成 1,一批 IO 任务跑得很慢(~/复现.sh 能看到慢)。说明写了该调到的值 K。 任务:把 max_workers 改成 K,让它更快跑完、结果之和仍正确。修好运行 ~/che
纯算加 worker 有没有用
场景:~/调优/日志.txt 记了一批纯计算任务在 worker=1/2/4/8 下的耗时(受 GIL 限,几乎不变)。对照表列了八个说法。 任务:根据日志,选出正确的结论(纯计算加 worker 几乎不变快,因为 GIL),到对照表里查它
吞吐是多少
场景:~/调优/日志.txt 记了一次运行:一共处理了多少个任务、花了多少秒(两行)。对照表列了八个数。 任务:算出吞吐(每秒处理多少个 = 任务数 // 秒数),到对照表里查那个数对应的标记。 可操作范围:只在分给你的这台实验机上操作。可
交付:给批量任务配好池
场景:要交付一个处理批量 IO 任务的程序,说明写了任务个数 N、该用的 worker 数 K。 任务:写 ~/调优/答.py:用 ThreadPoolExecutor(max_workers=K) 对 0..N-1 每个算平方求和,打印「
异步是什么意思
上面这条在等的空档,下面这条在推进 一个线程,等的时候去干别的 「异步」最核心的一句话是【0】。