使用cpu查找前5个进程的Python代码

时间:2019-01-31 02:52:50

标签: python python-2.7 shell

我是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

有人可以帮我这个程序吗。

谢谢。

2 个答案:

答案 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())