2017-04-23 57 views
0

我需要創建一個Python腳本,此時只返回使用最多內存的進程。我在解析值時遇到問題。我有什麼至今:Python腳本返回內存使用率最高的進程

import psutil 

x = psutil.pids() 
for i in x: 
p = psutil.Process(i) 
print(p.name(), p.memory_full_info()) 

這將返回該格式的過程完整列表:

ssh-agent pfullmem(rss=339968, vms=11350016, shared=0, text=352256, lib=0, data=421888, dirty=0, uss=598016, pss=605184, swap=0) 

我得到的值錯誤,每當我試圖操縱這些值。我想只返回MOST內存密集型進程,也許還有RSS或VMS值。

+0

你會得到什麼樣的錯誤? – vonBerg

回答

0
import psutil 

pids = psutil.pids() 
processes = map(psutil.Process, pids) 
most_mem_process = max(processes, key=lambda p: p.memory_full_info().data) 
+0

謝謝@EyuelDK讓我走在那裏。我唯一遺漏的就是會列出內存數量的uss數字。我已經得到了這個隔離數字:jk = psutil.Process(i).memory_percent(memtype ='uss'),將pid作爲'i'並返回uss數字。 – Joe

+0

我對'psutil'庫不是很熟悉,但是如果你想根據'uss'進行過濾,只需用'p.memory_full_info()。uss'替換'p.memory_full_info()。data'。最後,most_mem_process(即一個Process對象)擁有您需要的所有信息,包括'uss' – EyuelDK

0
import subprocess 
subprocess.check_output('ps -eo pmem,cmd | sort -k 1 -nr | head -1', shell=True).decode('utf-8').replace('\n', '') 

此命令返回兩件事情:第一個,是進程的內存使用情況,第二個的比例正在運行的進程具有最高的內存使用情況。

+1

請添加更多信息和上下文。這段代碼做了什麼?它如何回答用戶的問題?如果你打算做一個只有代碼的答案,那麼代碼至少需要很好的評論。 –