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: