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

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

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

引言

在科技飛速發(fā)展的今天,人工智能已經(jīng)滲透到我們生活的方方面面,從基礎(chǔ)的日常溝通到復(fù)雜的商業(yè)決策,智能技術(shù)的影響力正在以驚人的速度擴(kuò)大。以自然語言處理為例,智能助手不僅能理解人類的日常對話,還能通過情感分析提供個性化的回應(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)大的計算基礎(chǔ);從應(yīng)用層面看,智能推薦系統(tǒng)正在重塑電商和內(nèi)容平臺的用戶體驗,而自動駕駛技術(shù)則有望徹底改變未來的交通方式。這些發(fā)展都彰顯出AI技術(shù)的巨大潛力。

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

核心庫選擇

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

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

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

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

PyQt5/PySide6(第三方庫):

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

CPU相關(guān):

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

內(nèi)存管理:

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

磁盤信息:

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

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

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

顯存使用情況

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

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

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

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

優(yōu)勢:

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

缺點:

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

示例應(yīng)用:

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

基本系統(tǒng)信息采集實現(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']} | 啟動時間: {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()
        
        # 定時更新
        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)簽頁...

高級功能擴(kuò)展

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

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("時間 (秒)")
        
        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)用打包為獨立可執(zhí)行文件:

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

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

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

適用于入門級需求,主要包含:

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

中級監(jiān)控方案

增加實時性和可視化能力:

# 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硬盤健康檢測 典型配置示例:

高級企業(yè)級方案

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

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

特殊場景方案

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

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

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

相關(guān)文章

  • python生成excel的實例代碼

    python生成excel的實例代碼

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

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

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

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

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

    Python爬取365好書中小說代碼實例

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

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

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

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

    這篇文章主要介紹了Python使用Turtle模塊繪制五星紅旗代碼示例,具有一定借鑒價值,需要的朋友可以參考下。
    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是一個開源的Python機(jī)器學(xué)習(xí)庫,基于Torch,用于自然語言處理等應(yīng)用程序,它是一個可續(xù)計算包,提供兩個高級功能:1、具有強(qiáng)大的GPU加速的張量計算(如NumPy)。2、包含自動求導(dǎo)系統(tǒng)的深度神經(jīng)網(wǎng)絡(luò)
    2021-10-10

最新評論

文昌市| 通城县| 卢氏县| 克拉玛依市| 诸城市| 海兴县| 石嘴山市| 蒲江县| 乌拉特中旗| 白银市| 铜鼓县| 桦南县| 平乐县| 阜康市| 昌黎县| 榆社县| 阿坝县| 增城市| 巫山县| 凌云县| 太谷县| 普格县| 正阳县| 尚志市| 利津县| 仪征市| 晋江市| 南漳县| 临沧市| 长岛县| 巫山县| 博客| 叙永县| 兴安盟| 晋江市| 理塘县| 元谋县| 柘荣县| 新干县| 淮南市| 徐州市|