Python實現(xiàn)讀取Linux系統(tǒng)的CPU以及內(nèi)存占用
直接貼代碼
import subprocess
def get_system_stats():
# 通過 shell 命令獲取 CPU 使用率和內(nèi)存使用率
cpu_command = "top -bn1 | grep '%Cpu(s)' | awk '{print $2}'"
memory_command = "free | grep Mem | awk '{print $3/$2 * 100.0}'"
# 執(zhí)行命令并獲取輸出結果
cpu_result = subprocess.check_output(cpu_command, shell=True).decode().strip()
memory_result = subprocess.check_output(memory_command, shell=True).decode().strip()
# 轉換結果為浮點數(shù)
cpu_usage = float(cpu_result)
memory_usage = float(memory_result)
# 返回 CPU 使用率和內(nèi)存使用率
return cpu_usage, memory_usage
# 調(diào)用函數(shù)并獲取結果
cpu_usage, memory_usage = get_system_stats()
print("CPU 使用率: ", cpu_usage)
print("內(nèi)存使用率: ", memory_usage)
在上述示例中,get_system_stats 函數(shù)使用 subprocess 模塊執(zhí)行 shell 命令來獲取系統(tǒng)的 CPU 使用率和內(nèi)存使用率。通過 top 命令和 grep、awk 進行過濾和提取相關信息,并將結果轉換為浮點數(shù)后返回。
代碼解釋:
cpu_command = "top -bn1 | grep '%Cpu(s)' | awk '{print $2}'"
讓我們逐步解釋這個命令的每個部分:
1.top -bn1: 這是 top 命令的參數(shù),用于顯示系統(tǒng)資源的實時使用情況。-b 表示以批處理模式運行,n1 表示只運行一次。
2.grep '%Cpu(s)': 這是 grep 命令的參數(shù),用于在命令的輸出中篩選包含 %Cpu(s) 的行。%Cpu(s) 是 top 命令輸出中 CPU 使用率相關信息的標識。
3.awk '{print $2}': 這是 awk 命令的參數(shù),用于提取每行的第二個字段并進行打印。在這里,awk 命令將提取第二個字段,即 CPU 使用率的數(shù)值。
綜合起來,這個命令的作用是運行 top 命令獲取系統(tǒng)資源信息,并通過管道傳遞給 grep 命令進行篩選,然后再傳遞給 awk 命令提取 CPU 使用率的數(shù)值。最終,cpu_command 變量會保存這個完整的 shell 命令字符串。
在 Python 代碼中,subprocess.check_output(cpu_command, shell=True) 的作用是執(zhí)行這個 shell 命令,并將輸出結果以字符串的形式返回。
memory_command = "free | grep Mem | awk '{print $3/$2 * 100.0}'"
讓我們逐步解釋這個命令的每個部分:
1.free: 這是 free 命令,用于顯示系統(tǒng)內(nèi)存使用情況。
2.grep Mem: 這是 grep 命令的參數(shù),用于篩選包含 "Mem" 的行,以過濾出與內(nèi)存相關的信息。
3.awk '{print $3/$2 * 100.0}': 這是 awk 命令的參數(shù),用于計算內(nèi)存使用率。它提取每行的第三個字段(已使用內(nèi)存)和第二個字段(總內(nèi)存),然后將其相除并乘以 100,得到內(nèi)存使用率。
綜合起來,這個命令的作用是運行 free 命令獲取系統(tǒng)內(nèi)存信息,并通過管道傳遞給 grep 命令進行篩選,然后再傳遞給 awk 命令計算內(nèi)存使用率。最終,memory_command 變量會保存這個完整的 shell 命令字符串。
在 Python 代碼中,subprocess.check_output(memory_command, shell=True) 的作用是執(zhí)行這個 shell 命令,并將輸出結果以字符串的形式返回。
請注意,上述代碼是一個示例,你可以根據(jù)你的需求和具體的 Linux 系統(tǒng)進行適當?shù)恼{(diào)整和改進。另外,需要確保你的 Python 環(huán)境中已經(jīng)安裝了相關的依賴和工具,以使 subprocess 模塊能夠正常工作。
結果如下:

知識補充
Python不僅可以讀取linux系統(tǒng)的cpu以及內(nèi)存占用,也可以讀取docker資源占用,下面是實現(xiàn)代碼,需要的可以參考一下
函數(shù)內(nèi)部使用該名稱獲取相應的容器對象,并計算 CPU 使用率和內(nèi)存使用率。最后,函數(shù)返回這兩個結果供調(diào)用者使用。
def get_container_stats(container_name):
client = DockerClient() # 假設你已經(jīng)初始化了 Docker 客戶端
container = client.containers.get(container_name)
stats = container.stats(stream=False)
cpu_usage = 100 * stats['cpu_stats']['cpu_usage']['total_usage'] / stats['cpu_stats']['system_cpu_usage']
memory_used = 100 * stats['memory_stats']['usage'] / stats['memory_stats']['limit']
return cpu_usage, memory_used
# 調(diào)用函數(shù)并獲取結果
container_name = 'ueransim-slice1'
cpu_usage, memory_used = get_container_stats(container_name)
print("CPU 使用率: ", cpu_usage)
print("內(nèi)存使用率: ", memory_used)到此這篇關于Python實現(xiàn)讀取Linux系統(tǒng)的CPU以及內(nèi)存占用的文章就介紹到這了,更多相關Python讀取Linux系統(tǒng)CPU內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
理解Python數(shù)據(jù)離散化手寫if-elif語句與pandas中cut()方法實現(xiàn)
這篇文章主要介紹了通過手寫if-elif語句與pandas中cut()方法實現(xiàn)示例理解Python數(shù)據(jù)離散化詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-05-05
centos+nginx+uwsgi部署django項目上線
本文主要介紹了centos+nginx+uwsgi部署django項目上線,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2022-07-07
Python插件virtualenv搭建虛擬環(huán)境
這篇文章主要為大家詳細介紹了Python插件virtualenv搭建虛擬環(huán)境,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-11-11

