首页 > 解决方案 > 使用 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

有人可以在这个程序中帮助我吗..

提前致谢。

标签: pythonpython-2.7shell

解决方案


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 使用情况进行相应调整以列出。希望这可以帮助。


推荐阅读