如何编写一个Python控制台程序,输出类似于Linux的top命令?

7 投票
1 回答
3166 浏览
提问于 2025-04-17 08:33

在Linux系统中,使用top命令可以看到类似下面的输出:

任务总数:158个,其中1个正在运行,157个处于休眠状态,0个被停止,0个是僵尸进程。
CPU使用情况:用户占用6.3%,系统占用3.2%,优先级占用0.0%,空闲占用89.9%,等待占用0.2%,硬件中断占用0.0%,软件中断占用0.2%,偷取占用0.0%。
内存情况:总共8264212k,已使用2637492k,剩余5626720k,缓存299884k。
交换区情况:总共4192924k,已使用0k,剩余4192924k,缓存2010332k。

进程ID 用户名 优先级 nice值 虚拟内存 实际内存 共享内存 状态 CPU占用率 内存占用率 运行时间 命令
7178 mysql 15 0 52876 31m 4680 S 21.3 0.4 308:12.04 mysqld
2262 www 16 0 28092 11m 4764 S 4.0 0.1 2:02.31 php-cgi
2110 www 16 0 27956 11m 4888 S 3.7 0.1 2:04.51 php-cgi
2005 www 16 0 28680 12m 4872 S 3.0 0.2 2:04.10 php-cgi
1955 www 16 0 28476 12m 5220 S 2.7 0.1 2:06.51 php-cgi
2030 www 16 0 28260 11m 4872 S 2.0 0.1 2:05.27 php-cgi
7044 www 15 0 24348 19m 932 S 0.7 0.2 1:58.38 nginx

这里面只有部分内容是不断变化的。

我只能输出一行不断变化的内容,而不能换行:

import  sys
import  time

if __name__ == '__main__':
    i = 0
    while True:
        sys.stdout.write('i = %d.\r' % i)
        sys.stdout.flush()
        time.sleep(1)
        i += 1

我想知道如何像top命令那样输出多行内容(不断变化而不换行)。

抱歉,我的英语不好。希望这样说能让你明白。

谢谢,
Qi

1 个回答

6

你需要使用一个库来处理和控制台的互动,比如说这个链接里的内容:http://docs.python.org/howto/curses.html

撰写回答