我有一个 Python 多处理程序,它用于处理一个 40GB 的文本文件。它在 Ubuntu 机器上运行的时间越长,速度似乎就越慢。特别是,我注意到许多子进程使用的 CPU 功率为 0%。偶尔,这些子进程也会使用 CPU,但大多数时候它们根本不使用 CPU。
程序可能存在什么问题?这台机器的内存很大,所以不是内存问题。
vmstat 输出:
:~# vmstat 3
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
r b swpd free buff cache si so bi bo in cs us sy id wa st
5 0 0 125372376 513092 86170112 0 0 18 97 0 0 8 10 82 0 0
3 0 0 125088040 513092 86170112 0 0 0 32 23057 5634 8 4 89 0 0
4 0 0 125617664 513092 86170104 0 0 0 5 23279 6038 8 14 78 0 0
4 0 0 125224624 513092 86170112 0 0 0 43 24269 6734 8 4 88 0 0
5 0 0 126028016 513092 86170128 0 0 0 172 23112 5805 8 12 81 0 0
4 0 0 125310704 513092 86170136 0 0 0 236 24020 6637 10 4 86 0 0
12 0 0 126350656 513092 86170288 0 0 0 572 27158 6431 9 12 79 0 0
4 0 0 125345584 513092 86170336 0 0 0 332 30882 6405 9 5 86 0 0
3 0 0 125047856 513092 86170336 0 0 0 52 24165 6408 7 3 90 0 0
4 0 0 125438048 513092 86170336 0 0 0 1 21120 5704 8 14 77 0 0
3 0 0 125139064 513092 86170336 0 0 0 24 24790 6116 7 3 89 0 0
4 0 0 125601800 513092 86170304 0 0 0 11 21626 5594 8 12 80 0 0
3 0 0 125213312 513092 86170304 0 0 0 56 26952 6679 8 4 88 0 0
4 0 0 126086096 513092 86170304 0 0 0 12 23574 5922 8 11 81 0 0
3 0 0 125342456 513092 86170344 0 0 0 33 26524 6022 9 4 87 0 0
35 0 0 125595744 513092 86170336 0 0 0 16 17467 6340 7 5 88 0 0
4 0 0 125431152 513092 86170336 0 0 0 209 23077 5967 8 10 82 0 0
5 0 0 125092640 513092 86170336 0 0 0 571 22415 6603 9 4 87 0 0
5 0 0 125586400 513092 86170456 0 0 0 168 24643 6681 10 12 78 0 0
3 0 0 125207424 513092 86170464 0 0 0 227 32891 6183 8 4 89 0 0
4 0 0 125813376 513092 86170448 0 0 0 15 24456 6451 9 14 76 0 0
3 0 0 125302176 513092 86170456 0 0 0 28 26945 5461 8 4 88 0 0
8 0 0 126314288 513092 86170456 0 0 0 11 21473 5201 7 13 80 0 0