python - 使用 cpu 查找前 5 个进程的 Python 代码
问题描述
我是 python 新手,我有一个简单的问题,即使用 CPU 查找顶级进程。我可以在 shell 中使用 ps 和 sort 来完成。
我检查了一些链接,但它没有帮助,部分原因是该函数定义如下,
define find_proc(ps_input)
ps_input 将如下所示,
PID CPU PROG
12658 20 ABC
19265 80 BCD
21265 60 BAD
19655 11 BCE
有人可以在这个程序中帮助我吗..
提前致谢。
解决方案
psutil是我推荐的。从 PyPI 站点,这里是包描述,
psutil(进程和系统实用程序)是一个跨平台库,用于在 Python 中检索有关正在运行的进程和系统利用率(CPU、内存、磁盘、网络、传感器)的信息。它主要用于系统监控、分析和限制进程资源以及管理正在运行的进程。它实现了 UNIX 命令行工具提供的许多功能,例如:ps、top、lsof、netstat、ifconfig、who、df、kill、free、nice、ionice、iostat、iotop、uptime、pidof、tty、taskset、pmap。
为了解决您的问题陈述,这是我从该站点获取的示例,其中列出了按内存排序的进程 - https://thispointer.com/python-get-list-of-all-running-processes-and-sort-by -最高内存使用/
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 使用情况进行相应调整以列出。希望这可以帮助。
推荐阅读
- php - 在 PHP 中从 3 个文本文件进行所有组合
- rest - 可以使用 spark 集群代替 java REST 应用程序吗
- spring - 我什么时候需要将 Spring Cloud Config 与 Vault 一起使用,而不仅仅是使用 Spring Cloud Vault?
- java - layout_constraintGuide_percent 不起作用 - android
- sourcekit - XcodeKit 和 SourceKit
- sql - SQL Server 查询以获取 2 个日期之间的工作日数,不包括节假日
- java - 如何使用 qpid-config.json 设置带有队列的 Qpid
- polymorphism - 埃菲尔:功能调用中不兼容的实际参数
- python - 混合问题上的变量总和不匹配
- java - 由用户结束或重新启动的程序的良好班级组织