Python實(shí)現(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í)行命令并獲取輸出結(jié)果 cpu_result = subprocess.check_output(cpu_command, shell=True).decode().strip() memory_result = subprocess.check_output(memory_command, shell=True).decode().strip() # 轉(zhuǎn)換結(jié)果為浮點(diǎn)數(shù) cpu_usage = float(cpu_result) memory_usage = float(memory_result) # 返回 CPU 使用率和內(nèi)存使用率 return cpu_usage, memory_usage # 調(diào)用函數(shù)并獲取結(jié)果 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 進(jìn)行過濾和提取相關(guān)信息,并將結(jié)果轉(zhuǎn)換為浮點(diǎn)數(shù)后返回。
代碼解釋:
cpu_command = "top -bn1 | grep '%Cpu(s)' | awk '{print $2}'"
讓我們逐步解釋這個(gè)命令的每個(gè)部分:
1.top -bn1: 這是 top 命令的參數(shù),用于顯示系統(tǒng)資源的實(shí)時(shí)使用情況。-b 表示以批處理模式運(yùn)行,n1 表示只運(yùn)行一次。
2.grep '%Cpu(s)': 這是 grep 命令的參數(shù),用于在命令的輸出中篩選包含 %Cpu(s) 的行。%Cpu(s) 是 top 命令輸出中 CPU 使用率相關(guān)信息的標(biāo)識(shí)。
3.awk '{print $2}': 這是 awk 命令的參數(shù),用于提取每行的第二個(gè)字段并進(jìn)行打印。在這里,awk 命令將提取第二個(gè)字段,即 CPU 使用率的數(shù)值。
綜合起來,這個(gè)命令的作用是運(yùn)行 top 命令獲取系統(tǒng)資源信息,并通過管道傳遞給 grep 命令進(jìn)行篩選,然后再傳遞給 awk 命令提取 CPU 使用率的數(shù)值。最終,cpu_command 變量會(huì)保存這個(gè)完整的 shell 命令字符串。
在 Python 代碼中,subprocess.check_output(cpu_command, shell=True) 的作用是執(zhí)行這個(gè) shell 命令,并將輸出結(jié)果以字符串的形式返回。
memory_command = "free | grep Mem | awk '{print $3/$2 * 100.0}'"
讓我們逐步解釋這個(gè)命令的每個(gè)部分:
1.free: 這是 free 命令,用于顯示系統(tǒng)內(nèi)存使用情況。
2.grep Mem: 這是 grep 命令的參數(shù),用于篩選包含 "Mem" 的行,以過濾出與內(nèi)存相關(guān)的信息。
3.awk '{print $3/$2 * 100.0}': 這是 awk 命令的參數(shù),用于計(jì)算內(nèi)存使用率。它提取每行的第三個(gè)字段(已使用內(nèi)存)和第二個(gè)字段(總內(nèi)存),然后將其相除并乘以 100,得到內(nèi)存使用率。
綜合起來,這個(gè)命令的作用是運(yùn)行 free 命令獲取系統(tǒng)內(nèi)存信息,并通過管道傳遞給 grep 命令進(jìn)行篩選,然后再傳遞給 awk 命令計(jì)算內(nèi)存使用率。最終,memory_command 變量會(huì)保存這個(gè)完整的 shell 命令字符串。
在 Python 代碼中,subprocess.check_output(memory_command, shell=True) 的作用是執(zhí)行這個(gè) shell 命令,并將輸出結(jié)果以字符串的形式返回。
請(qǐng)注意,上述代碼是一個(gè)示例,你可以根據(jù)你的需求和具體的 Linux 系統(tǒng)進(jìn)行適當(dāng)?shù)恼{(diào)整和改進(jìn)。另外,需要確保你的 Python 環(huán)境中已經(jīng)安裝了相關(guān)的依賴和工具,以使 subprocess 模塊能夠正常工作。
結(jié)果如下:
知識(shí)補(bǔ)充
Python不僅可以讀取linux系統(tǒng)的cpu以及內(nèi)存占用,也可以讀取docker資源占用,下面是實(shí)現(xiàn)代碼,需要的可以參考一下
函數(shù)內(nèi)部使用該名稱獲取相應(yīng)的容器對(duì)象,并計(jì)算 CPU 使用率和內(nèi)存使用率。最后,函數(shù)返回這兩個(gè)結(jié)果供調(diào)用者使用。
def get_container_stats(container_name): client = DockerClient() # 假設(shè)你已經(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ù)并獲取結(jié)果 container_name = 'ueransim-slice1' cpu_usage, memory_used = get_container_stats(container_name) print("CPU 使用率: ", cpu_usage) print("內(nèi)存使用率: ", memory_used)
到此這篇關(guān)于Python實(shí)現(xiàn)讀取Linux系統(tǒng)的CPU以及內(nèi)存占用的文章就介紹到這了,更多相關(guān)Python讀取Linux系統(tǒng)CPU內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- Linux下使用python調(diào)用top命令獲得CPU利用率
- linux系統(tǒng)使用python獲取cpu信息腳本分享
- 使用python獲取CPU和內(nèi)存信息的思路與實(shí)現(xiàn)(linux系統(tǒng))
- Python3監(jiān)控windows,linux系統(tǒng)的CPU、硬盤、內(nèi)存使用率和各個(gè)端口的開啟情況詳細(xì)代碼實(shí)例
- Python 如何查看程序內(nèi)存占用情況
- python獲取系統(tǒng)內(nèi)存占用信息的實(shí)例方法
- 利用Python如何實(shí)時(shí)檢測(cè)自身內(nèi)存占用
相關(guān)文章
Python學(xué)習(xí)之名字,作用域,名字空間(下)
這篇文章主要介紹了Python學(xué)習(xí)之名字,作用域,名字空間,緊接上一篇文章內(nèi)容展開全文,需要的小伙伴可以參考一下,希望對(duì)你的學(xué)習(xí)有所幫助2022-05-05python實(shí)現(xiàn)通過flask和前端進(jìn)行數(shù)據(jù)收發(fā)
今天小編就為大家分享一篇python實(shí)現(xiàn)通過flask和前端進(jìn)行數(shù)據(jù)收發(fā),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2019-08-08python環(huán)境搭建和pycharm的安裝配置及漢化詳細(xì)教程(零基礎(chǔ)小白版)
這篇文章主要介紹了python環(huán)境搭建和pycharm的安裝配置及漢化(零基礎(chǔ)小白版),需要的朋友可以參考下2020-08-08python+Selenium自動(dòng)化測(cè)試——輸入,點(diǎn)擊操作
這篇文章主要介紹了python+Selenium自動(dòng)化測(cè)試——輸入,點(diǎn)擊操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2020-03-03Python 列表(List)的底層實(shí)現(xiàn)原理分析
這篇文章主要介紹了Python 列表(List)的底層實(shí)現(xiàn)原理分析,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2021-03-03python3.6+django2.0+mysql搭建網(wǎng)站過程詳解
這篇文章主要介紹了python3.6+django2.0+mysql搭建網(wǎng)站過程詳解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-07-07Python基于更相減損術(shù)實(shí)現(xiàn)求解最大公約數(shù)的方法
這篇文章主要介紹了Python基于更相減損術(shù)實(shí)現(xiàn)求解最大公約數(shù)的方法,簡(jiǎn)單說明了更相減損術(shù)的概念、原理并結(jié)合Python實(shí)例形式分析了基于更相減損術(shù)實(shí)現(xiàn)求解最大公約數(shù)的相關(guān)操作技巧與注意事項(xiàng),需要的朋友可以參考下2018-04-04