🖥️ Python 系統資源監控工具教學(PyQt5 + psutil)

更新 發佈閱讀 5 分鐘

本篇教學將帶你從零理解並實作一個「系統資源監控工具」,具備以下功能:

✅ 即時監控 CPU / 記憶體使用率

✅ 多執行緒背景監控(不卡 UI)

✅ 自動記錄 CSV 日誌

✅ 視覺化圖表(matplotlib)

✅ PyQt5 圖形化操作介面

vocus|新世代的創作平台
vocus|新世代的創作平台



📦 一、環境準備

請先安裝必要套件:

pip install psutil matplotlib PyQt5

🧠 二、整體架構說明

本專案分成兩大核心:

1️⃣ ResourceMonitorThread(背景監控)

  • 負責收集 CPU / Memory
  • 每隔 N 秒記錄一次
  • 寫入 CSV
  • 用 Signal 傳回 UI

2️⃣ ResourceMonitorUI(圖形介面)

  • 控制開始 / 停止
  • 顯示即時 log
  • 顯示統計資訊
  • 產生圖表

🔁 三、背景執行緒(QThread)

為什麼要用 QThread?

如果直接在 UI 裡跑 while loop:

❌ UI 會卡死

❌ 無法操作按鈕

👉 所以一定要用「背景執行緒」


📌 核心程式碼

class ResourceMonitorThread(QThread):
update_signal = pyqtSignal(str)

👉 用 signal 把資料丟回 UI


📊 每次監控做什麼?

cpu_usage = psutil.cpu_percent(interval=1)
memory_usage = psutil.virtual_memory().percent

然後:

  1. 存到記憶體
  2. 寫入 CSV
  3. 發送訊息給 UI

📁 CSV 輸出格式

Timestamp,CPU (%),Memory (%)
2026-03-31 10:00:00,35.2,62.1

🖼️ 四、UI 介面設計(PyQt5)

主要元件

元件功能QSpinBox設定監控間隔QPushButton控制開始/停止QTextEdit顯示 logQLabel標題QFileDialog存圖


🎛️ 操作流程

  1. 設定間隔(預設 180 秒)
  2. 點擊「開始監控」
  3. 即時顯示資料
  4. 點擊「停止」
  5. 查看統計
  6. 產生圖表

▶️ 五、開始 / 停止監控

▶️ 開始監控

self.monitor_thread = ResourceMonitorThread(interval)
self.monitor_thread.update_signal.connect(self.update_status)
self.monitor_thread.start()

👉 重點:

  • 建立 thread
  • 綁定 signal
  • 啟動

⏹️ 停止監控

self.monitor_thread.stop()
self.monitor_thread.wait()

👉 wait() 很重要(確保執行緒結束)


📈 六、統計資訊計算

平均 = sum(data) / len(data)
最小 = min(data)
最大 = max(data)

畫面顯示:

📊 監控統計信息
記錄次數: 10

CPU:
平均: 35.2% | 最小: 10% | 最大: 80%

Memory:
平均: 60% | 最小: 55% | 最大: 70%

📊 七、圖表產生(matplotlib)

核心邏輯

fig, (ax1, ax2) = plt.subplots(2, 1)

👉 兩張圖:

  • 上:CPU
  • 下:Memory

CPU 圖

ax1.plot(x, cpu)
ax1.fill_between(x, cpu)

👉 有:

  • 折線
  • 填色區域(更好看)

Memory 圖

ax2.plot(x, memory)

儲存圖片

plt.savefig(file_path, dpi=300)

👉 高解析度輸出


🧹 八、清除日誌功能

self.status_text.clear()
self.stats_text.clear()

並加上確認視窗:

QMessageBox.question(...)
留言
avatar-img
螃蟹_crab的沙龍
167會員
322內容數
本業是影像辨識軟體開發,閒暇時間進修AI相關內容,將學習到的內容寫成文章分享。 興趣是攝影,踏青,探索未知領域。 人生就是不斷的挑戰及自我認清,希望老了躺在床上不會後悔自己什麼都沒做。
螃蟹_crab的沙龍的其他內容
2025/07/24
subprocess 是 Python 標準庫中的一個模組,用來啟動子進程(例如執行外部程式或其他 Python 腳本)。在這篇教學中,我們將聚焦於 subprocess.Popen() 的實際應用,並結合執行 Python 腳本的情境進行說明。 📌 為什麼使用 subprocess.Pope
2025/07/24
subprocess 是 Python 標準庫中的一個模組,用來啟動子進程(例如執行外部程式或其他 Python 腳本)。在這篇教學中,我們將聚焦於 subprocess.Popen() 的實際應用,並結合執行 Python 腳本的情境進行說明。 📌 為什麼使用 subprocess.Pope
2025/06/09
當你在開發 Python 應用時,常會使用 logging 模組來記錄程式運行的資訊。不過,你可能會遇到這個令人困惑的問題: 當 logging 模組一開始就已經「有 handler」時,你後續設定的 basicConfig() 完全無效! 這篇文章將完整解析這個問題的根本原因、如何重現、以及該
2025/06/09
當你在開發 Python 應用時,常會使用 logging 模組來記錄程式運行的資訊。不過,你可能會遇到這個令人困惑的問題: 當 logging 模組一開始就已經「有 handler」時,你後續設定的 basicConfig() 完全無效! 這篇文章將完整解析這個問題的根本原因、如何重現、以及該
2025/05/27
隨著 Apple 設備越來越普及,許多人在傳輸或下載 iPhone 照片時,會發現照片的副檔名變成了 .HEIC。這種檔案在 Windows 系統上常常無法直接開啟或編輯,因此了解如何將 .HEIC 圖片轉換成更通用的 .PNG 格式就變得非常重要。 本文將帶你一步步了解 HEIC 是什麼,並使用
Thumbnail
2025/05/27
隨著 Apple 設備越來越普及,許多人在傳輸或下載 iPhone 照片時,會發現照片的副檔名變成了 .HEIC。這種檔案在 Windows 系統上常常無法直接開啟或編輯,因此了解如何將 .HEIC 圖片轉換成更通用的 .PNG 格式就變得非常重要。 本文將帶你一步步了解 HEIC 是什麼,並使用
Thumbnail
看更多
你可能也想看
Thumbnail
這是一場修復文化與重建精神的儀式,觀眾不需要完全看懂《遊林驚夢:巧遇Hagay》,但你能感受心與土地團聚的渴望,也不急著在此處釐清或定義什麼,但你的在場感受,就是一條線索,關於如何找著自己的路徑、自己的聲音。
Thumbnail
這是一場修復文化與重建精神的儀式,觀眾不需要完全看懂《遊林驚夢:巧遇Hagay》,但你能感受心與土地團聚的渴望,也不急著在此處釐清或定義什麼,但你的在場感受,就是一條線索,關於如何找著自己的路徑、自己的聲音。
Thumbnail
本文分析導演巴里・柯斯基(Barrie Kosky)如何運用極簡的舞臺配置,將布萊希特(Bertolt Brecht)的「疏離效果」轉化為視覺奇觀與黑色幽默,探討《三便士歌劇》在當代劇場中的新詮釋,並藉由舞臺、燈光、服裝、音樂等多方面,分析該作如何在保留批判核心的同時,觸及觀眾的觀看位置與人性幽微。
Thumbnail
本文分析導演巴里・柯斯基(Barrie Kosky)如何運用極簡的舞臺配置,將布萊希特(Bertolt Brecht)的「疏離效果」轉化為視覺奇觀與黑色幽默,探討《三便士歌劇》在當代劇場中的新詮釋,並藉由舞臺、燈光、服裝、音樂等多方面,分析該作如何在保留批判核心的同時,觸及觀眾的觀看位置與人性幽微。
Thumbnail
整合 Mac mini 三面視角,加上電源開關與狀態顯示。雖然簡單,但是初學者能學到許多重要的基本知識。
Thumbnail
整合 Mac mini 三面視角,加上電源開關與狀態顯示。雖然簡單,但是初學者能學到許多重要的基本知識。
Thumbnail
好的工作桌面能讓心情愉悅,也能提升效率。打造的過程就像維護軟體架構,會隨著需求不斷演進。希望我的拋磚引玉能帶給你一點靈感。
Thumbnail
好的工作桌面能讓心情愉悅,也能提升效率。打造的過程就像維護軟體架構,會隨著需求不斷演進。希望我的拋磚引玉能帶給你一點靈感。
Thumbnail
講解用 SwiftUI 畫 Mac mini M4 正面的實作重點:機殼光澤、插孔與電源燈、以及底部散熱孔的畫法。
Thumbnail
講解用 SwiftUI 畫 Mac mini M4 正面的實作重點:機殼光澤、插孔與電源燈、以及底部散熱孔的畫法。
Thumbnail
背景:從冷門配角到市場主線,算力與電力被重新定價   小P從2008進入股市,每一個時期的投資亮點都不同,記得2009蘋果手機剛上市,當時蘋果只要在媒體上提到哪一間供應鏈,隔天股價就有驚人的表現,當時光學鏡頭非常熱門,因為手機第一次搭上鏡頭可以拍照,也造就傳統相機廠的殞落,如今手機已經全面普及,題
Thumbnail
背景:從冷門配角到市場主線,算力與電力被重新定價   小P從2008進入股市,每一個時期的投資亮點都不同,記得2009蘋果手機剛上市,當時蘋果只要在媒體上提到哪一間供應鏈,隔天股價就有驚人的表現,當時光學鏡頭非常熱門,因為手機第一次搭上鏡頭可以拍照,也造就傳統相機廠的殞落,如今手機已經全面普及,題
Thumbnail
5 月將於臺北表演藝術中心映演的「2026 北藝嚴選」《海妲・蓋柏樂》,由臺灣劇團「晃晃跨幅町」製作,本文將以從舞台符號、聲音與表演調度切入,討論海妲・蓋柏樂在父權社會結構下的困境,並結合榮格心理學與馮.法蘭茲對「阿尼姆斯」與「永恆少年」原型的分析,理解女人何以走向精神性的操控、毀滅與死亡。
Thumbnail
5 月將於臺北表演藝術中心映演的「2026 北藝嚴選」《海妲・蓋柏樂》,由臺灣劇團「晃晃跨幅町」製作,本文將以從舞台符號、聲音與表演調度切入,討論海妲・蓋柏樂在父權社會結構下的困境,並結合榮格心理學與馮.法蘭茲對「阿尼姆斯」與「永恆少年」原型的分析,理解女人何以走向精神性的操控、毀滅與死亡。
Thumbnail
講解用 SwiftUI 畫 Mac mini M4 底部的實作重點:金屬機殼與塑膠殼的同心圓角、畫出一整圈散熱孔的技巧。
Thumbnail
講解用 SwiftUI 畫 Mac mini M4 底部的實作重點:金屬機殼與塑膠殼的同心圓角、畫出一整圈散熱孔的技巧。
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News