这是一个 nvtop 的程序画出来的折线图
可以反应显卡的利用率和内存占用率的时序变化
我想用 python 写一个的话,有什么 tui 可以让我方便的实现呢?
这个 nvtop 是 c 写的,我不懂 c
我看到 python 下有两个出名的 tui 包
- textual
- pytermgui
但是其中都没有画折线图的 demo 代码样例
谁能帮帮我?
这是一个 nvtop 的程序画出来的折线图
可以反应显卡的利用率和内存占用率的时序变化
我想用 python 写一个的话,有什么 tui 可以让我方便的实现呢?
这个 nvtop 是 c 写的,我不懂 c
我看到 python 下有两个出名的 tui 包
但是其中都没有画折线图的 demo 代码样例
谁能帮帮我?
from asciigraph import AsciiGraph
graph = AsciiGraph()
data = [10, 12, 13, 14, 12, 10]
print(graph.plot(data))
from termplotlib import plot
data = [10, 12, 13, 14, 12, 10]
plot(data)
from console_line_chart import ConsoleLineChart
data = [10, 12, 13, 14, 12, 10]
chart = ConsoleLineChart()
chart.plot(data)
glances、nvitop 用的是 curses,curses 是标准库里面的
使用 curses 实现一个按照内存使用率升序排序的 『简易htop』
import curses
import psutil
def draw_header(stdscr):
stdscr.addstr(0, 2, "PID")
stdscr.addstr(0, 10, "Name")
stdscr.addstr(0, 40, "CPU (%)")
stdscr.addstr(0, 50, "Memory (%)")
def draw_processes(stdscr, processes):
max_y, max_x = stdscr.getmaxyx()
for i, process in enumerate(processes, start=1):
if i >= max_y:
break
stdscr.addstr(i, 2, str(process.info['pid']))
stdscr.addstr(i, 10, process.info['name'])
stdscr.addstr(i, 40, f"{process.info['cpu_percent']:.1f}")
stdscr.addstr(i, 50, f"{process.info['memory_percent']:.1f}")
def main(stdscr):
curses.curs_set(0)
stdscr.clear()
stdscr.refresh()
# 获取进程信息
processes = list(psutil.process_iter(attrs=['pid', 'name', 'cpu_percent', 'memory_percent']))
processes = sorted(processes, key=lambda p: p.info['memory_percent'], reverse=True)
while True:
stdscr.clear()
draw_header(stdscr)
draw_processes(stdscr, processes)
stdscr.refresh()
stdscr.getch()
curses.wrapper(main)
4 回答4.5k 阅读✓ 已解决
1 回答3.3k 阅读✓ 已解决
4 回答3.8k 阅读✓ 已解决
3 回答2.2k 阅读✓ 已解决
1 回答4.5k 阅读✓ 已解决
1 回答3.9k 阅读✓ 已解决
1 回答2.8k 阅读✓ 已解决
使用
matplotlib
, 具体的使用方法可以参考下面:https://www.cnblogs.com/hgrun...
https://blog.csdn.net/qq54281...