实时监控系统的内存占用率和CPU占用率的另一种实现,输出到固定位置,新的输出覆盖旧的,不换行。
同样来自知乎Quan Zou的文章,并参考了下面的链接
#original author:Quan Zou # 链接:https://HdhCmsTestzhihu测试数据/question/21100416/answer/53430644 # 参考:https://docs.microsoft测试数据/en-us/windows/console/setconsolecursorposition?redirectedfrom=MSDN
源代码如下:
# -*- coding:utf-8 -*- # python 3.7.3 # psutil 5.6.3 # # 实时监控系统的内存占用率和CPU占用率,两行显示,并刷新。 # 另一种方式的实现: # 通过Windows API来实现,网上的教程大都是改Win控制台颜色的,但是控制位置的API也是有的。 import ctypes import psutil import os import time import sys #获取当前运行的pid p1=psutil.Process(os.getpid()) class COORD(ctypes.Structure): _fields_ = [("X", ctypes.c_short), ("Y", ctypes.c_short)] # GetStdHandle:检索指定标准设备(标准输入,标准输出或标准错误)的句柄。 STD_OUTPUT_HANDLE= -11 std_out_handle = ctypes.windll.kernel32.GetStdHandle(STD_OUTPUT_HANDLE) # 一个COORD结构,以字符为单位指定新的光标位置。坐标是屏幕缓冲区字符单元格的列和行。坐标必须在控制台屏幕缓冲区的边界内。 dwCursorPosition = COORD() # 下面这两行就是设置刷新的位置了,但是有个问题,如果第4行、第0列,如果原先就有数据,则会覆盖掉,但其他位置的不会受影响。 dwCursorPosition.X = 0 dwCursorPosition.Y = 4 # ↓ SetConsoleCursorPosition:设置光标在指定控制台屏幕缓冲区中的位置。 ctypes.windll.kernel32.SetConsoleCursorPosition(std_out_handle,dwCursorPosition) i=1 while True: memory = psutil. Virtual _memory().percent #内存占用率 cpu = psutil.cpu_percent(interval=1.0) #cpu占用率 print('#'*22) print('## 内存占用率:' + str(memory) + '% ##' + '\n' + '## CPU 占用率:' + str(cpu) + '% ##') print('#'*22) # print(i) # i += 1 ctypes.windll.kernel32.SetConsoleCursorPosition(std_out_handle,dwCursorPosition) exit()
运行结果:
通过Windows API来实现网上的都是改Win控制台颜色的,但是控制位置的API也是有的,终于在Windows上实现的还算凑合。
查看更多关于实时监控CUP和内存的使用率(三)的详细内容...
声明:本文来自网络,不代表【好得很程序员自学网】立场,转载请注明出处:http://haodehen.cn/did164137