在系統監控和性能分析中,獲取CPU的使用率是一個常見的需求。Python作為一種功能強大的編程語言,提供了多種方式來獲取系統的CPU使用率。本文將介紹如何使用Python獲取CPU每秒的使用率,并提供相應的代碼示例。
psutil
庫psutil
是一個跨平臺的庫,用于檢索系統信息和進程管理。它提供了獲取CPU使用率的簡單方法。
psutil
首先,你需要安裝psutil
庫??梢允褂靡韵旅钸M行安裝:
pip install psutil
以下是一個使用psutil
獲取CPU每秒使用率的示例代碼:
import psutil
import time
def get_cpu_usage():
while True:
cpu_percent = psutil.cpu_percent(interval=1)
print(f"CPU使用率: {cpu_percent}%")
time.sleep(1)
if __name__ == "__main__":
get_cpu_usage()
psutil.cpu_percent(interval=1)
:獲取CPU的使用率,interval=1
表示每隔1秒獲取一次。time.sleep(1)
:讓程序休眠1秒,以便每秒獲取一次CPU使用率。os
和time
模塊如果你不想使用第三方庫,也可以使用Python內置的os
和time
模塊來獲取CPU使用率。這種方法需要讀取系統的/proc/stat
文件(僅適用于Linux系統)。
以下是一個使用os
和time
模塊獲取CPU每秒使用率的示例代碼:
import os
import time
def get_cpu_usage():
def read_cpu_stats():
with open('/proc/stat') as f:
line = f.readline()
return [int(x) for x in line.split()[1:]]
prev_stats = read_cpu_stats()
time.sleep(1)
curr_stats = read_cpu_stats()
prev_total = sum(prev_stats)
curr_total = sum(curr_stats)
prev_idle = prev_stats[3]
curr_idle = curr_stats[3]
total_diff = curr_total - prev_total
idle_diff = curr_idle - prev_idle
cpu_usage = 100 * (total_diff - idle_diff) / total_diff
print(f"CPU使用率: {cpu_usage}%")
if __name__ == "__main__":
while True:
get_cpu_usage()
time.sleep(1)
read_cpu_stats()
:讀取/proc/stat
文件中的CPU統計信息。prev_stats
和curr_stats
:分別表示前一次和當前的CPU統計信息。total_diff
和idle_diff
:分別表示CPU總時間和空閑時間的差值。cpu_usage
:計算CPU的使用率。multiprocessing
模塊如果你需要同時監控多個CPU核心的使用率,可以使用multiprocessing
模塊來并行獲取每個核心的使用率。
以下是一個使用multiprocessing
模塊獲取多核CPU每秒使用率的示例代碼:
import psutil
import time
from multiprocessing import Process, Queue
def get_cpu_usage(queue):
while True:
cpu_percent = psutil.cpu_percent(interval=1, percpu=True)
queue.put(cpu_percent)
time.sleep(1)
def print_cpu_usage(queue):
while True:
cpu_percent = queue.get()
for i, percent in enumerate(cpu_percent):
print(f"CPU核心 {i} 使用率: {percent}%")
if __name__ == "__main__":
queue = Queue()
p1 = Process(target=get_cpu_usage, args=(queue,))
p2 = Process(target=print_cpu_usage, args=(queue,))
p1.start()
p2.start()
p1.join()
p2.join()
psutil.cpu_percent(interval=1, percpu=True)
:獲取每個CPU核心的使用率。multiprocessing.Queue()
:用于在進程之間傳遞數據。Process
:創建兩個進程,一個用于獲取CPU使用率,另一個用于打印CPU使用率。本文介紹了三種使用Python獲取CPU每秒使用率的方法:使用psutil
庫、使用os
和time
模塊、以及使用multiprocessing
模塊。每種方法都有其適用的場景,你可以根據實際需求選擇合適的方法。希望本文對你有所幫助!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。