我启动了15个Python线程,但是top命令表示只有1个正在运行:
top -p 4176,然后键入H
top - 23:46:56 up 46 days, 5:43, 1 user, load average: 1.16, 1.07, 1.01
Tasks: 16 total, **1 running**, 15 sleeping, 0 stopped, 0 zombie
Cpu(s): 29.8%us, 0.8%sy, 0.0%ni, 68.4%id, 0.9%wa, 0.0%hi, 0.0%si, 0.0%st
Mem: 8085788k total, 7944132k used, 141656k free, 140756k buffers
Swap: 7811068k total, 0k used, 7811068k free, 6902536k cached
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
29771 scraping 20 0 341m 148m 3460 S 16.6 1.9 27:46.68 python
29760 scraping 20 0 341m 148m 3460 S 16.3 1.9 27:45.82 python
29768 scraping 20 0 341m 148m 3460 S 9.0 1.9 28:15.11 python
29767 scraping 20 0 341m 148m 3460 S 8.7 1.9 27:47.97 python
29770 scraping 20 0 341m 148m 3460 R 8.0 1.9 28:05.83 python
29758 scraping 20 0 341m 148m 3460 S 7.7 1.9 28:02.30 python
29761 scraping 20 0 341m 148m 3460 S 7.0 1.9 27:40.68 python
29759 scraping 20 0 341m 148m 3460 S 6.7 1.9 28:21.71 python
29763 scraping 20 0 341m 148m 3460 S 5.7 1.9 28:11.03 python
29769 scraping 20 0 341m 148m 3460 S 5.7 1.9 27:59.36 python
29757 scraping 20 0 341m 148m 3460 S 4.3 1.9 28:01.46 python
29762 scraping 20 0 341m 148m 3460 S 4.0 1.9 28:03.70 python
29765 scraping 20 0 341m 148m 3460 S 4.0 1.9 27:37.34 python
29766 scraping 20 0 341m 148m 3460 S 1.0 1.9 28:05.28 python
29764 scraping 20 0 341m 148m 3460 S 0.3 1.9 27:44.07 python
4761 scraping 20 0 341m 148m 3460 S 0.0 1.9 0:00.61 python
我想知道为什么只有1个正在运行的任务而不是15/16?
非常感谢。
答案 0 :(得分:3)
因为它们是线程,而不是进程。进程归操作系统所有,进程可以有多个线程。 http://www.cafeaulait.org/course/week11/02.html
答案 1 :(得分:3)
在* nix上的CPython线程是使用pthread实现的,并且它们在使用top / htop等时显示为它们是单独的进程,即使它们不是(运行15个python进程和运行15个python之间有很大的区别线程和top
输出可能会误导这里)。
由于GIL只有一个运行 - 在CPython中,每个解释器中一次只执行一条指令。