最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

基于Python開發(fā)電腦硬件監(jiān)控工具

 更新時(shí)間:2025年07月21日 16:04:32   作者:超級(jí)小識(shí)  
在科技飛速發(fā)展的今天,人工智能已經(jīng)滲透到我們生活的方方面面,本文主要來和大家介紹一下如何使用Python開發(fā)電腦硬件監(jiān)控工具,可以采集系統(tǒng)信息,需要的可以了解下

引言

在科技飛速發(fā)展的今天,人工智能已經(jīng)滲透到我們生活的方方面面,從基礎(chǔ)的日常溝通到復(fù)雜的商業(yè)決策,智能技術(shù)的影響力正在以驚人的速度擴(kuò)大。以自然語言處理為例,智能助手不僅能理解人類的日常對話,還能通過情感分析提供個(gè)性化的回應(yīng);在醫(yī)療領(lǐng)域,AI輔助診斷系統(tǒng)的準(zhǔn)確率已達(dá)到專業(yè)醫(yī)師水平,極大地提高了早期疾病篩查的效率。

面對這場深刻的技術(shù)變革,理解其背后的邏輯與應(yīng)用場景變得至關(guān)重要。從技術(shù)角度看,機(jī)器學(xué)習(xí)算法的進(jìn)步(如深度學(xué)習(xí)、強(qiáng)化學(xué)習(xí))為AI應(yīng)用提供了強(qiáng)大的計(jì)算基礎(chǔ);從應(yīng)用層面看,智能推薦系統(tǒng)正在重塑電商和內(nèi)容平臺(tái)的用戶體驗(yàn),而自動(dòng)駕駛技術(shù)則有望徹底改變未來的交通方式。這些發(fā)展都彰顯出AI技術(shù)的巨大潛力。

通過深入探討核心原理與實(shí)踐案例,我們可以更清晰地把握技術(shù)趨勢。例如,分析計(jì)算機(jī)視覺在安防監(jiān)控中的實(shí)際應(yīng)用,或研究預(yù)測算法在金融風(fēng)控中的具體表現(xiàn),都能幫助我們理解不同場景下的技術(shù)適配性。這種理解不僅有助于發(fā)掘潛在商業(yè)價(jià)值,更能為未來的技術(shù)創(chuàng)新與產(chǎn)業(yè)突破奠定堅(jiān)實(shí)基礎(chǔ)。隨著5G、邊緣計(jì)算等配套技術(shù)的發(fā)展,AI的應(yīng)用邊界還將持續(xù)擴(kuò)展,帶來更多令人期待的可能性。

核心庫選擇

GPUtil專門用于獲取NVIDIA GPU信息:

platform模塊提供基本的系統(tǒng)識(shí)別功能:

GUI開發(fā)選項(xiàng)對比:

tkinter(Python標(biāo)準(zhǔn)庫):

PyQt5/PySide6(第三方庫):

psutil(Python System and Process Utilities)是一個(gè)跨平臺(tái)的系統(tǒng)監(jiān)控庫,可以獲取系統(tǒng)運(yùn)行時(shí)的各種關(guān)鍵信息:

CPU相關(guān):

  • 使用率(psutil.cpu_percent())
  • 核心數(shù)量(psutil.cpu_count())
  • 溫度監(jiān)控(部分平臺(tái)支持)
  • 示例:監(jiān)控CPU負(fù)載并設(shè)置告警閾值

內(nèi)存管理:

  • 物理內(nèi)存總量及使用情況(psutil.virtual_memory())
  • 交換分區(qū)信息(psutil.swap_memory())
  • 示例:實(shí)時(shí)顯示內(nèi)存使用曲線圖

磁盤信息:

  • 分區(qū)信息(psutil.disk_partitions())
  • 使用情況(psutil.disk_usage())
  • IO統(tǒng)計(jì)(psutil.disk_io_counters())
  • 示例:監(jiān)控磁盤剩余空間并預(yù)警

網(wǎng)絡(luò)監(jiān)控:

  • 網(wǎng)絡(luò)接口信息(psutil.net_if_addrs())
  • IO統(tǒng)計(jì)(psutil.net_io_counters())
  • 連接信息(psutil.net_connections())

顯存使用情況

  • GPU溫度監(jiān)控
  • 負(fù)載百分比
  • 示例:深度學(xué)習(xí)訓(xùn)練時(shí)的GPU監(jiān)控面板
  • 操作系統(tǒng)類型(platform.system())
  • 系統(tǒng)版本(platform.version())
  • 處理器架構(gòu)(platform.machine())

示例:生成系統(tǒng)診斷報(bào)告

  • 優(yōu)勢:無需額外安裝,適合簡單界面
  • 缺點(diǎn):界面較簡陋,功能有限

示例應(yīng)用:基礎(chǔ)系統(tǒng)監(jiān)控儀表盤

優(yōu)勢:

  • 豐富的UI組件(表格、圖表等)
  • 支持多線程
  • 現(xiàn)代化界面設(shè)計(jì)

缺點(diǎn):

  • 需要單獨(dú)安裝
  • 學(xué)習(xí)曲線較陡

示例應(yīng)用:

  • 專業(yè)級(jí)系統(tǒng)監(jiān)控工具
  • 帶歷史數(shù)據(jù)可視化的性能分析器

基本系統(tǒng)信息采集實(shí)現(xiàn)

import psutil
import platform
from datetime import datetime

def get_system_info():
    # CPU信息
    cpu_percent = psutil.cpu_percent(interval=1)
    cpu_count = psutil.cpu_count(logical=False)
    cpu_logical = psutil.cpu_count(logical=True)
    
    # 內(nèi)存信息
    mem = psutil.virtual_memory()
    mem_total = round(mem.total / (1024**3), 2)
    mem_used = round(mem.used / (1024**3), 2)
    mem_percent = mem.percent
    
    # 磁盤信息
    disk = psutil.disk_usage('/')
    disk_total = round(disk.total / (1024**3), 2)
    disk_used = round(disk.used / (1024**3), 2)
    disk_percent = disk.percent
    
    # 系統(tǒng)信息
    system_info = {
        "system": platform.system(),
        "node": platform.node(),
        "release": platform.release(),
        "version": platform.version(),
        "machine": platform.machine(),
        "boot_time": datetime.fromtimestamp(psutil.boot_time()).strftime("%Y-%m-%d %H:%M:%S")
    }
    
    return {
        "cpu": {
            "percent": cpu_percent,
            "cores_physical": cpu_count,
            "cores_logical": cpu_logical
        },
        "memory": {
            "total": mem_total,
            "used": mem_used,
            "percent": mem_percent
        },
        "disk": {
            "total": disk_total,
            "used": disk_used,
            "percent": disk_percent
        },
        "system": system_info
    }

添加GPU監(jiān)控功能

try:
    import GPUtil
    def get_gpu_info():
        gpus = GPUtil.getGPUs()
        if gpus:
            return {
                "name": gpus[0].name,
                "load": gpus[0].load * 100,
                "memory_used": round(gpus[0].memoryUsed, 1),
                "memory_total": round(gpus[0].memoryTotal, 1),
                "temperature": gpus[0].temperature
            }
        return None
except ImportError:
    def get_gpu_info():
        return None

使用Tkinter構(gòu)建簡單GUI

import tkinter as tk
from tkinter import ttk

class HardwareMonitor(tk.Tk):
    def __init__(self):
        super().__init__()
        self.title("硬件監(jiān)控工具")
        self.geometry("600x400")
        
        # 創(chuàng)建標(biāo)簽框架
        self.cpu_frame = ttk.LabelFrame(self, text="CPU 信息")
        self.mem_frame = ttk.LabelFrame(self, text="內(nèi)存 信息")
        self.disk_frame = ttk.LabelFrame(self, text="磁盤 信息")
        self.sys_frame = ttk.LabelFrame(self, text="系統(tǒng) 信息")
        
        # 布局
        self.cpu_frame.pack(fill="both", expand=True, padx=5, pady=5)
        self.mem_frame.pack(fill="both", expand=True, padx=5, pady=5)
        self.disk_frame.pack(fill="both", expand=True, padx=5, pady=5)
        self.sys_frame.pack(fill="both", expand=True, padx=5, pady=5)
        
        # 添加標(biāo)簽
        self.cpu_label = ttk.Label(self.cpu_frame, text="")
        self.mem_label = ttk.Label(self.mem_frame, text="")
        self.disk_label = ttk.Label(self.disk_frame, text="")
        self.sys_label = ttk.Label(self.sys_frame, text="")
        
        self.cpu_label.pack()
        self.mem_label.pack()
        self.disk_label.pack()
        self.sys_label.pack()
        
        self.update_data()
    
    def update_data(self):
        data = get_system_info()
        gpu_data = get_gpu_info()
        
        # 更新CPU信息
        cpu_text = f"使用率: {data['cpu']['percent']}% | 物理核心: {data['cpu']['cores_physical']} | 邏輯核心: {data['cpu']['cores_logical']}"
        self.cpu_label.config(text=cpu_text)
        
        # 更新內(nèi)存信息
        mem_text = f"使用: {data['memory']['used']}GB / {data['memory']['total']}GB ({data['memory']['percent']}%)"
        self.mem_label.config(text=mem_text)
        
        # 更新磁盤信息
        disk_text = f"使用: {data['disk']['used']}GB / {data['disk']['total']}GB ({data['disk']['percent']}%)"
        self.disk_label.config(text=disk_text)
        
        # 更新系統(tǒng)信息
        sys_text = f"系統(tǒng): {data['system']['system']} {data['system']['release']} | 主機(jī)名: {data['system']['node']} | 啟動(dòng)時(shí)間: {data['system']['boot_time']}"
        self.sys_label.config(text=sys_text)
        
        # 如果有GPU信息則顯示
        if gpu_data:
            if not hasattr(self, 'gpu_frame'):
                self.gpu_frame = ttk.LabelFrame(self, text="GPU 信息")
                self.gpu_frame.pack(fill="both", expand=True, padx=5, pady=5)
                self.gpu_label = ttk.Label(self.gpu_frame, text="")
                self.gpu_label.pack()
            
            gpu_text = f"{gpu_data['name']} | 負(fù)載: {gpu_data['load']:.1f}% | 顯存: {gpu_data['memory_used']}GB/{gpu_data['memory_total']}GB | 溫度: {gpu_data['temperature']}°C"
            self.gpu_label.config(text=gpu_text)
        
        self.after(1000, self.update_data)

使用PyQt5構(gòu)建更專業(yè)的界面

from PyQt5.QtWidgets import (QApplication, QMainWindow, QVBoxLayout, 
                            QWidget, QLabel, QTabWidget, QProgressBar)
from PyQt5.QtCore import QTimer
import sys

class QtHardwareMonitor(QMainWindow):
    def __init__(self):
        super().__init__()
        self.setWindowTitle("硬件監(jiān)控工具")
        self.setGeometry(100, 100, 800, 600)
        
        self.central_widget = QWidget()
        self.setCentralWidget(self.central_widget)
        
        self.layout = QVBoxLayout(self.central_widget)
        
        self.tabs = QTabWidget()
        self.layout.addWidget(self.tabs)
        
        # 創(chuàng)建標(biāo)簽頁
        self.cpu_tab = QWidget()
        self.mem_tab = QWidget()
        self.disk_tab = QWidget()
        self.sys_tab = QWidget()
        
        self.tabs.addTab(self.cpu_tab, "CPU")
        self.tabs.addTab(self.mem_tab, "內(nèi)存")
        self.tabs.addTab(self.disk_tab, "磁盤")
        self.tabs.addTab(self.sys_tab, "系統(tǒng)")
        
        # 初始化UI
        self.init_cpu_tab()
        self.init_mem_tab()
        self.init_disk_tab()
        self.init_sys_tab()
        
        # 定時(shí)更新
        self.timer = QTimer()
        self.timer.timeout.connect(self.update_data)
        self.timer.start(1000)
    
    def init_cpu_tab(self):
        layout = QVBoxLayout(self.cpu_tab)
        
        self.cpu_label = QLabel("CPU 信息")
        self.cpu_progress = QProgressBar()
        
        layout.addWidget(self.cpu_label)
        layout.addWidget(self.cpu_progress)
    
    def update_data(self):
        data = get_system_info()
        
        # 更新CPU信息
        cpu_text = f"CPU 使用率: {data['cpu']['percent']}% | 物理核心: {data['cpu']['cores_physical']} | 邏輯核心: {data['cpu']['cores_logical']}"
        self.cpu_label.setText(cpu_text)
        self.cpu_progress.setValue(data['cpu']['percent'])
        
        # 更新其他標(biāo)簽頁...

高級(jí)功能擴(kuò)展

實(shí)時(shí)圖表顯示 使用matplotlib可以創(chuàng)建實(shí)時(shí)更新的硬件使用率圖表:

from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg
from matplotlib.figure import Figure

class ChartMonitor(tk.Tk):
    def __init__(self):
        super().__init__()
        self.title("硬件監(jiān)控圖表")
        
        # 創(chuàng)建圖表
        self.fig = Figure(figsize=(5, 4), dpi=100)
        self.ax = self.fig.add_subplot(111)
        
        # 初始化數(shù)據(jù)
        self.x_data = list(range(60))
        self.y_data = [0] * 60
        
        # 創(chuàng)建畫布
        self.canvas = FigureCanvasTkAgg(self.fig, master=self)
        self.canvas.draw()
        self.canvas.get_tk_widget().pack(side=tk.TOP, fill=tk.BOTH, expand=True)
        
        self.update_chart()
    
    def update_chart(self):
        # 獲取當(dāng)前CPU使用率
        cpu_percent = psutil.cpu_percent(interval=1)
        
        # 更新數(shù)據(jù)
        self.y_data.append(cpu_percent)
        if len(self.y_data) > 60:
            self.y_data.pop(0)
        
        # 清除并重新繪制
        self.ax.clear()
        self.ax.plot(self.x_data, self.y_data[-60:], 'r-')
        self.ax.set_ylim(0, 100)
        self.ax.set_title("CPU 使用率 (%)")
        self.ax.set_xlabel("時(shí)間 (秒)")
        
        self.canvas.draw()
        self.after(1000, self.update_chart)

網(wǎng)絡(luò)監(jiān)控功能 可以擴(kuò)展網(wǎng)絡(luò)監(jiān)控功能:

def get_network_info():
    net_io = psutil.net_io_counters()
    return {
        "bytes_sent": net_io.bytes_sent,
        "bytes_recv": net_io.bytes_recv,
        "packets_sent": net_io.packets_sent,
        "packets_recv": net_io.packets_recv
    }

打包為可執(zhí)行文件

使用PyInstaller可以將應(yīng)用打包為獨(dú)立可執(zhí)行文件:

pip install pyinstaller
pyinstaller --onefile --windowed hardware_monitor.py

這些方法提供了從簡單到高級(jí)的硬件監(jiān)控實(shí)現(xiàn)方案,可以根據(jù)需求選擇合適的組件進(jìn)行組合或擴(kuò)展。具體來說:

基礎(chǔ)監(jiān)控方案

適用于入門級(jí)需求,主要包含:

  • CPU/GPU溫度監(jiān)控(如使用lm-sensors工具)
  • 內(nèi)存使用率統(tǒng)計(jì)(通過free -m命令)
  • 磁盤空間檢查(df -h命令) 應(yīng)用場景:個(gè)人開發(fā)者調(diào)試或小型服務(wù)器基礎(chǔ)運(yùn)維

中級(jí)監(jiān)控方案

增加實(shí)時(shí)性和可視化能力:

# Prometheus配置片段
scrape_configs:
  - job_name: 'node'
    static_configs:
      - targets: ['192.168.1.100:9100']
  • 使用Prometheus+Grafana搭建監(jiān)控儀表盤
  • 集成網(wǎng)絡(luò)流量監(jiān)控(如nload工具)
  • 添加SMART硬盤健康檢測 典型配置示例:

高級(jí)企業(yè)級(jí)方案

包含自動(dòng)化預(yù)警和分布式監(jiān)控:

  • 部署ZabbixNagios監(jiān)控集群
  • 實(shí)現(xiàn)SNMP協(xié)議設(shè)備管理
  • 定制化開發(fā)監(jiān)控插件(如通過Python編寫硬件探針) 擴(kuò)展建議:
  • 對關(guān)鍵業(yè)務(wù)服務(wù)器配置雙通道監(jiān)控
  • 建立分級(jí)告警機(jī)制(郵件/短信/企業(yè)微信通知)

特殊場景方案

  • 工業(yè)環(huán)境:增加4-20mA信號(hào)采集模塊
  • 邊緣計(jì)算:部署輕量級(jí)Telegraf代理
  • 高安全要求:采用硬件加密的監(jiān)控?cái)?shù)據(jù)鏈路

方案選擇時(shí)需綜合考慮硬件規(guī)模(單機(jī)/集群)、監(jiān)控粒度(秒級(jí)/分鐘級(jí))以及預(yù)算成本。建議從基礎(chǔ)方案開始,逐步按需擴(kuò)展功能模塊。

以上就是基于Python開發(fā)電腦硬件監(jiān)控工具的詳細(xì)內(nèi)容,更多關(guān)于Python監(jiān)控的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • python生成excel的實(shí)例代碼

    python生成excel的實(shí)例代碼

    這篇文章主要為大家詳細(xì)介紹了python生成excel的實(shí)例代碼,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-11-11
  • 手把手教你搭建python+selenium自動(dòng)化環(huán)境(圖文)

    手把手教你搭建python+selenium自動(dòng)化環(huán)境(圖文)

    本文主要介紹了手把手教你搭建python+selenium自動(dòng)化環(huán)境,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-06-06
  • Python快速優(yōu)雅的批量修改Word文檔樣式

    Python快速優(yōu)雅的批量修改Word文檔樣式

    本文主要將涉及os,glob,docx模塊的綜合應(yīng)用,幫助大家快速批量修改Word文檔樣式實(shí)現(xiàn)辦公自動(dòng)化,感興趣的朋友可以了解下
    2021-05-05
  • Python爬取365好書中小說代碼實(shí)例

    Python爬取365好書中小說代碼實(shí)例

    這篇文章主要介紹了Python爬取365好書中小說代碼實(shí)例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-02-02
  • python中的內(nèi)置函數(shù)getattr()介紹及示例

    python中的內(nèi)置函數(shù)getattr()介紹及示例

    其實(shí)getattr()這個(gè)方法最主要的作用是實(shí)現(xiàn)反射機(jī)制。也就是說可以通過字符串獲取方法實(shí)例。這樣,你就可以把一個(gè)類可能要調(diào)用的方法放在配置文件里,在需要的時(shí)候動(dòng)態(tài)加載。
    2014-07-07
  • Python使用Turtle模塊繪制五星紅旗代碼示例

    Python使用Turtle模塊繪制五星紅旗代碼示例

    這篇文章主要介紹了Python使用Turtle模塊繪制五星紅旗代碼示例,具有一定借鑒價(jià)值,需要的朋友可以參考下。
    2017-12-12
  • python腳本框架webpy的url映射詳解

    python腳本框架webpy的url映射詳解

    這篇文章主要為大家介紹了python腳本框架web.py的url映射的示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步
    2021-11-11
  • 在漏洞利用Python代碼真的很爽

    在漏洞利用Python代碼真的很爽

    在漏洞利用Python代碼真的很爽...
    2007-08-08
  • python Matplotlib基礎(chǔ)--如何添加文本和標(biāo)注

    python Matplotlib基礎(chǔ)--如何添加文本和標(biāo)注

    這篇文章主要介紹了python Matplotlib基礎(chǔ)--如何添加文本和標(biāo)注,幫助大家更好的利用Matplotlib繪制圖表,感興趣的朋友可以了解下
    2021-01-01
  • PyTorch零基礎(chǔ)入門之構(gòu)建模型基礎(chǔ)

    PyTorch零基礎(chǔ)入門之構(gòu)建模型基礎(chǔ)

    PyTorch是一個(gè)開源的Python機(jī)器學(xué)習(xí)庫,基于Torch,用于自然語言處理等應(yīng)用程序,它是一個(gè)可續(xù)計(jì)算包,提供兩個(gè)高級(jí)功能:1、具有強(qiáng)大的GPU加速的張量計(jì)算(如NumPy)。2、包含自動(dòng)求導(dǎo)系統(tǒng)的深度神經(jīng)網(wǎng)絡(luò)
    2021-10-10

最新評論

天津市| 马鞍山市| 湖北省| 都昌县| 房产| 定西市| 乾安县| 南陵县| 新干县| 荣成市| 罗源县| 禄劝| 长治市| 宣武区| 武山县| 岗巴县| 峡江县| 乌兰县| 宁陕县| 锦州市| 白河县| 西丰县| 安福县| 景宁| 德格县| 将乐县| 三台县| 聂拉木县| 卢湾区| 县级市| 云安县| 营口市| 溧水县| 汉沽区| 阿拉尔市| 三明市| 浙江省| 正蓝旗| 泊头市| 洛浦县| 湖南省|