我是用 parallelpython (PP) 进行并行的,任务目标是处理 30000 个文件,最后计算结果的平均值等。由于每个文件独立,所以就考虑用最简单的分割方法,即分割文件列表,机器是 2xE5 , 48 核心,我用 PP 创建 48 线程,平均每个线程处理 625 个文件,我测试过读取+计算一个文件大约需要 0.4s (读取+数据处理大约 0.2 秒,计算 0.2 秒),按照计算,如果实现并行应该是 250s 左右,文件大小约 4M ,所以一次性处理 48 × 4M = 192M 文件我认为 IO 也应该不会太拖慢速度,问题是实际我需要 2800s 左右才能完成计算,在计算过程中,我使用 top 查看过 cpu 使用情况,发现所创建的进程( pp 是 process-based )的 cpu 使用只在 10% 左右,而且同时状态是 R 的只有 4 、 5 个,其他是 D 状态,针对 CPU 使用率问题我 Google 了一番无果,按照常规理解,每个进程不应该是独立的么,所以每个进程的 CPU 使用率应该是 100% 才对,这点在 PP 官网上似乎也没有详细介绍,所以想在此请教一下各位高手,进程状态为什么会是 D ,只有几个 R ,以及为什么是很低的 cpu 使用率。