runcat-pyqt5-win RunCat 是一款 mac应用,用奔跑的猫来显示当前系统资源(CPU)占用情况。
但是只有mac版,于是用python撸了一个,可以在windows任务栏(通知区域)养猫。
首先用psutil  获得CPU或内存的使用情况,然后用pyqt5创建QSystemTrayIcon显示在任务栏的托盘区域。
GPU的使用情况可以用 nvidia-ml-py, https://pypi.org/project/nvidia-ml-py/  的pynvml模块(仅限nvidia gpu)。
 
运行效果  
Requirements 
psutil 
pyqt5 
nvidia-ml-py 
 
Code 
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 import  sysimport  timeimport  threadingfrom  PyQt5.QtGui import  QIconfrom  PyQt5.QtWidgets import  QApplication, QSystemTrayIconimport  psutildef  func ():    while  True :         global  cpu         cpu = psutil.cpu_percent(interval=1 ) / 100          time.sleep(1 ) app = QApplication(sys.argv) app.setQuitOnLastWindowClosed(False ) tray = QSystemTrayIcon() tray.setIcon(QIcon('0.ico' )) tray.setVisible(True ) cpu = 0.1  timer = threading.Timer(1 , func, []) timer.start() while  True :    t = (cpu * cpu - 10  * cpu + 10 ) / 40      for  i in  range (5 ):                  tray.setIcon(QIcon('{}.ico' .format (i)))         tray.setToolTip('CPU: {:.2%}' .format (cpu))         time.sleep(t) app.exec_() 
 
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 import  sysimport  timeimport  threadingfrom  PyQt5.QtGui import  QIconfrom  PyQt5.QtWidgets import  QApplication, QSystemTrayIconimport  psutildef  func ():    while  True :         global  mem         mem = psutil.virtual_memory().percent / 100          time.sleep(1 ) app = QApplication(sys.argv) app.setQuitOnLastWindowClosed(False ) tray = QSystemTrayIcon() tray.setIcon(QIcon('0.ico' )) tray.setVisible(True ) mem = 0.1  timer = threading.Timer(1 , func, []) timer.start() while  True :    t = (mem * mem - 10  * mem + 10 ) / 40      for  i in  range (5 ):                  tray.setIcon(QIcon('{}.ico' .format (i)))         tray.setToolTip('Memory: {:.2%}' .format (mem))         time.sleep(t) app.exec_() 
 
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 import  sysimport  timeimport  threadingfrom  PyQt5.QtGui import  QIconfrom  PyQt5.QtWidgets import  QApplication, QSystemTrayIconimport  pynvmlpynvml.nvmlInit() handle = pynvml.nvmlDeviceGetHandleByIndex(0 )    def  func ():    while  True :         global  gpu         meminfo = pynvml.nvmlDeviceGetMemoryInfo(handle)         gpu = meminfo.used / meminfo.total         time.sleep(1 ) app = QApplication(sys.argv) app.setQuitOnLastWindowClosed(False ) tray = QSystemTrayIcon() tray.setIcon(QIcon('0.ico' )) tray.setVisible(True ) gpu = 0.1  timer = threading.Timer(1 , func, []) timer.start() while  True :    t = (gpu * gpu - 10  * gpu + 10 ) / 40      for  i in  range (5 ):                  tray.setIcon(QIcon('{}.ico' .format (i)))         tray.setToolTip('GPU: {:.2%}' .format (gpu))         time.sleep(t) app.exec_() 
 
Usage 
ref: