Python獲取某一進程的CPU利用率的方法詳解
一、運行代碼
import time import psutil _time = getattr(time, 'monotonic', time.time) sum_cpus = psutil.cpu_count() or 1 #計算機的CPU核心數(shù)量,如果無法獲取,則將核心數(shù)設(shè)置為1 def timer(): return _time() * sum_cpus #返回當前時間乘以CPU核心數(shù)量 pid_cpuinfo = {} #初始化一個空字典,用于存儲進程ID與CPU信息的映射關(guān)系 def GetProcessCPU_Pre(id): #計算并返回給定進程ID的CPU利用率 p = psutil.Process(id) #根據(jù)提供的進程ID,使用psutil庫的Process類實例化一個進程對象 tt = p.cpu_times() # 獲取進程的CPU時間信息 st0, tt0_0, tt0_1 = pid_cpuinfo.get(id, (0, 0, 0)) # 獲取之前保存的進程ID對應(yīng)的CPU信息,初始時設(shè)定為0 st1, tt1_0, tt1_1 = timer(), tt.user, tt.system #計算當前時間、進程用戶態(tài)CPU時間和系統(tǒng)態(tài)CPU時間 delta_proc = (tt1_0 - tt0_0) + (tt1_1 - tt0_1) #計算進程CPU時間的增量 delta_time = st1 - st0 #計算時間增量 try: cpus_percent = ((delta_proc / delta_time) * 100) #計算CPU利用率的百分比 except: cpus_percent = 0.0 pid_cpuinfo[id] = [st1, tt1_0, tt1_1] ##更新進程ID對應(yīng)的CPU信息 return "{:.2f}".format(cpus_percent) #返回格式化后的CPU利用率值,保留兩位小數(shù) # 輸入需要檢查的進程ID process_id = 25400 #25400為我此時要計算cpu利用率的進程ID result = GetProcessCPU_Pre(process_id) print(result)
二、查看進程ID
在不同的操作系統(tǒng)中,查看進程ID的方法可能會有所不同。以下是一些常見操作系統(tǒng)中查看進程ID的方法:
Windows:
1. 打開任務(wù)管理器:
可以使用快捷鍵`Ctrl + Shift + Esc`來打開任務(wù)管理器。
在任務(wù)管理器中,切換到“詳細信息”選項卡。
在“詳細信息”選項卡中,可以查看各個進程的PID(Process ID)。
macOS:
1. 打開活動監(jiān)視器:
通過`Spotlight`搜索欄搜索“活動監(jiān)視器”并打開。
在“CPU”或“進程”選項卡中,你可以看到各個進程的PID。
Linux (Ubuntu):
1. 使用命令行:
打開終端。
輸入以下命令可以查看所有正在運行的進程及其PID:
ps -ef
2. 使用系統(tǒng)監(jiān)控工具:
有些Linux發(fā)行版提供了系統(tǒng)監(jiān)控工具,如`System Monitor`,通過這類圖形界面工具也可以查看進程及其PID。
無論在哪種操作系統(tǒng)下,通常情況下都可以通過任務(wù)管理器、活動監(jiān)視器或命令行來查看運行的進程及其對應(yīng)的進程ID。根據(jù)你使用的操作系統(tǒng)和喜好選擇適合你的方法即可輕松查看進程ID。
三、運行結(jié)果
在PyCharm中的運行結(jié)果如下:
在ubantu系統(tǒng)運行可參考此教程:在Ubuntu系統(tǒng)中運行python代碼的幾個步驟
方法補充
除了上文的方法,小編還為大家整理了其他Python獲取進程的CPU利用率的方法,希望對大家有所幫助
_timer = getattr(time, 'monotonic', time.time) num_cpus = psutil.cpu_count() or 1 def timer(): return _timer() * num_cpus pid_cpuinfo = {} def GetProcessCPU_Pre(id): p = psutil.Process(id) pt = p.cpu_times() st1,pt1_0,pt1_1 = timer(),pt.user,pt.system # new st0,pt0_0,pt0_1 = pid_cpuinfo.get(id,(0,0,0)) # old delta_proc = (pt1_0 - pt0_0) + (pt1_1 - pt0_1) delta_time = st1 - st0 try: cpus_percent = ((delta_proc / delta_time) * 100) except: cpus_percent = 0.0 pid_cpuinfo[id] = [st1,pt1_0,pt1_1] return "{:.2f}".format(cpus_percent)
python監(jiān)控指定進程的CPU利用率
import time from tkinter import simpledialog import tkinter import psutil import os root=tkinter.Tk() root.withdraw() pid=int(simpledialog.askstring(title="pid",prompt="輸入進程號")) p=psutil.Process(pid) filename=p.name().split(".")[0]+"Process"+str(pid)+".csv" #if os.path.exists("./"+filename): # os.remove("./"+filename) # 文件第一行寫入進程名 f=open("./"+filename,"a+") f.write(p.name()+"\n") f.write("TIME,%CPU,%MEM\n") f.close() # 循環(huán)記錄時間、進程CPU利用率,內(nèi)存占用 while True: f=open("./"+filename,"a+") current_time = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime(time.time())) cpu_percent=p.cpu_percent() mem_percent=p.memory_percent() line=current_time+","+str(cpu_percent)+","+str(mem_percent) f.write(line+"\n") f.close() time.sleep(3)
到此這篇關(guān)于Python獲取某一進程的CPU利用率的方法詳解的文章就介紹到這了,更多相關(guān)Python獲取進程CPU利用率內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python實例方法、類方法、靜態(tài)方法的區(qū)別與作用詳解
這篇文章主要介紹了Python實例方法、類方法、靜態(tài)方法的區(qū)別與作用,結(jié)合實例形式分析了Python面向?qū)ο蟪绦蛟O(shè)計中實例方法、類方法、靜態(tài)方法的概念、原理、用法及相關(guān)操作技巧,需要的朋友可以參考下2019-03-03Python SELENIUM上傳文件或圖片實現(xiàn)過程
這篇文章主要介紹了Python SELENIUM上傳文件或圖片實現(xiàn)過程,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下2019-10-10python selenium 彈出框處理的實現(xiàn)
這篇文章主要介紹了python selenium 彈出框處理的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2019-02-02python selenium 獲取標簽的屬性值、內(nèi)容、狀態(tài)方法
今天小編就為大家分享一篇python selenium 獲取標簽的屬性值、內(nèi)容、狀態(tài)方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-06-06在Python中預(yù)先初始化列表內(nèi)容和長度的實現(xiàn)
今天小編就為大家分享一篇在Python中預(yù)先初始化列表內(nèi)容和長度的實現(xiàn),具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-11-11