0

我启动了 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?

非常感谢。

4

2 回答 2

3

因为它们是线程,而不是进程。一个进程归操作系统所有,一个进程可以有多个线程。 http://www.cafeaulait.org/course/week11/02.html

于 2012-07-17T15:49:38.830 回答
3

在 *nix 上的 CPython 线程是使用 pthread 实现的,并且在使用 top/htop 等时它们显示为单独的进程,即使它们不是(运行 15 个 python 进程和运行 15 个 python 线程和top输出之间存在很大差异在这里可能会产生误导)。

There is only one running due to GIL - in CPython there's always only one instruction executing at a time in each interpreter.

于 2012-07-17T15:57:21.730 回答