我是python的新手,我有一个使用CPU查找顶级进程的简单问题。我能够使用ps和sort在shell中做到这一点。
我检查了一些但链接,但是它并没有帮助,因为该函数的定义如下,
define find_proc(ps_input)
ps_input如下所示,
PID CPU PROG
12658 20 ABC
19265 80 BCD
21265 60 BAD
19655 11 BCE
有人可以帮我这个程序吗。
谢谢。
答案 0 :(得分:2)
psutil是我推荐的。在PyPI网站上,这是软件包说明,
psutil(进程和系统实用程序)是一个跨平台的库,用于 检索有关运行进程和系统利用率的信息 (Python,CPU,内存,磁盘,网络,传感器)。它是有益的 主要用于系统监视,概要分析和限制过程资源 和运行过程的管理。它实现了许多 UNIX命令行工具提供的功能,例如:ps,top, lsof,netstat,ifconfig,谁,df,kill,免费,不错,ionice,iostat, iotop,正常运行时间,pidof,tty,任务集,pmap。
为解决您的问题,这是我从网站上获取的示例,其中列出了按内存排序的出站进程-https://thispointer.com/python-get-list-of-all-running-processes-and-sort-by-highest-memory-usage/
def getListOfProcessSortedByMemory():
'''
Get list of running process sorted by Memory Usage
'''
listOfProcObjects = []
# Iterate over the list
for proc in psutil.process_iter():
try:
# Fetch process details as dict
pinfo = proc.as_dict(attrs=['pid', 'name', 'username'])
pinfo['vms'] = proc.memory_info().vms / (1024 * 1024)
# Append dict to list
listOfProcObjects.append(pinfo);
except (psutil.NoSuchProcess, psutil.AccessDenied, psutil.ZombieProcess):
pass
# Sort list of dict by key vms i.e. memory usage
listOfProcObjects = sorted(listOfProcObjects, key=lambda procObj: procObj['vms'], reverse=True)
return listOfProcObjects
完整代码可在上述网站上找到;您可能需要根据cpu的使用情况进行相应的调整以列出列表。希望这会有所帮助。
答案 1 :(得分:0)
UPDATE: Here is some example usages of psutil:
#!/usr/bin/env python
import psutil
#gives a single float value
psutil.cpu_percent()
#gives an object with many fields
psutil.virtual_memory()
# you can convert that object to a dictionary
dict(psutil.virtual_memory()._asdict())