
实时CPU使用率、内存使用等情况——小工具效果展示想要实时查看CPU使用情况的工具有很多但那些工具要不就是显示内容太多了要不就是显示一堆不关心的数据。所以上面这个效果是由自己实现的而且里面要显示的内容完全可以自定义。跟着我做包教包会第一步在你喜欢的文件夹里创建一个.txt文件名字随意比如我就在C:\Users\asus目录下创建一个cpustat.txt复制下面这份代码到cpustat.txt里备注下面这份代码你完全可以自己修改想在控制台显示什么就显示什么Do it by Yourselfimportpsutil,os,sys,platform,socket,getpassfromdatetimeimportdatetime os.system()defcolor(code,text):returnf\033[{code}m{text}\033[0mdefusage_color(pct):ifpct30:returncolor(32,f{pct:.1f}%)elifpct70:returncolor(33,f{pct:.1f}%)else:returncolor(31,f{pct:.1f}%)deffmt_gb(b):returnf{b/(1024**3):.1f}Gdefdisplay_width(s):计算字符串的实际显示宽度中文占2格英文占1格w0forchins:if\u4e00ch\u9fffor\u3000ch\u303for\uff00ch\uffef:w2else:w1returnwdefpad_to(label,width):补齐空格使显示宽度对齐到 widthcurdisplay_width(label)returnlabel *max(0,width-cur)defget_cpu_name():try:importwinreg keywinreg.OpenKey(winreg.HKEY_LOCAL_MACHINE,rHARDWARE\DESCRIPTION\System\CentralProcessor\0)namewinreg.QueryValueEx(key,ProcessorNameString)[0].strip()winreg.CloseKey(key)returnnameexceptException:returnplatform.processor()orUnknown CPUhostnamesocket.gethostname()usernamegetpass.getuser()cpu_nameget_cpu_name()corespsutil.cpu_count(logicalTrue)mem_totalpsutil.virtual_memory().total# 预定义标签计算最大显示宽度labels[ Hostname主机名, Time当前时间, CPU Model处理器型号, CPU UsageCPU使用率, Cores逻辑核心数, Base Freq基准频率, Memory内存使用, Username登录用户名,]max_label_widthmax(display_width(lb)forlbinlabels)# 获取终端宽度用于每行末尾填充空格消除残影try:term_widthos.get_terminal_size().columnsexceptOSError:term_width80sys.stdout.write(\033[2J\033[H)sys.stdout.write(\033[?25l)# 隐藏光标sys.stdout.flush()try:whileTrue:nowdatetime.now().strftime(%Y-%m-%d %H:%M:%S)usagepsutil.cpu_percent(interval1)mempsutil.virtual_memory()freqpsutil.cpu_freq()fqf{freq.current/1000:.2f}GHziffreqelseN/Amem_strf{fmt_gb(mem.used)}/{fmt_gb(mem_total)}values[color(1;37,hostname),color(1;37,now),color(1;37,cpu_name),usage_color(usage),color(33,str(cores)),color(35,fq),color(36,mem_str),color(90,username),]# 仅光标归位不清屏避免闪烁sys.stdout.write(\033[H)forlb,valinzip(labels,values):aligned_labelcolor(1;36,pad_to(lb,max_label_width))linef{aligned_label}{val}# 用 \033[K 清除当前行从光标到行尾的所有字符彻底消除残影且不闪屏sys.stdout.write(f{line}\033[K\n)sys.stdout.flush()exceptKeyboardInterrupt:sys.stdout.write(\033[?25h)# 恢复光标显示sys.stdout.write(\033[0m\n)print(Bye.)第二步把cpustat.txt重命名为cpustat.py第三步在同样的目录下创建一个.txt文件名字随意比如我还是在C:\Users\asus目录下创建cpustat.txt复制下面这份代码到cpustat.txt里echo off F:\Anaconda\python.exe C:\Users\asus\cpustat.py里面的C:\Users\asus\cpustat.py就是刚才创建的cpustat.py路径里面的F:\Anaconda\python.exe是你 Anconda 路径比如我的 Anconda 就是在F:\Anaconda\python.exe注意F:\Anaconda\python.exe C:\Users\asus\cpustat.py中间有个空格不要掉了第四步把cpustat.txt重名为cpustat.bat第五步给cpustat.bat配置环境变量使其能在命令窗口里随时随地执行1、在开始栏搜索path进入环境变量2、点击环境变量3、找到系统变量里的Path点击编辑4、点击新建输入cpustat.bat文件的路径比如我这里是C:\Users\asus5、依次点击确定第六步最后一步所有配置都完成了按键盘上的win r输入cmd然后确定输入.bat的文件名比如我创建的.bat叫cpustat.bat那就输入cpustat最终效果