用Python监视所有系统进程

用Python监视所有系统进程,python,process,watch,Python,Process,Watch,我试图用Python收集我的操作系统(Ubuntu)中进程的一些统计数据(生命周期、开始时间/完成时间等) 任务之一:我编写了一个函数,它获取系统中进程的名称和ID,但它很难看 def get_processes(): p = subprocess.Popen(['ps', '-e'], stdout=subprocess.PIPE) raw_string, e = p.communicate() strings_arr = raw_string.split('\n')

我试图用Python收集我的操作系统(Ubuntu)中进程的一些统计数据(生命周期、开始时间/完成时间等)

任务之一:我编写了一个函数,它获取系统中进程的名称和ID,但它很难看

def get_processes():
    p = subprocess.Popen(['ps', '-e'], stdout=subprocess.PIPE)
    raw_string, e = p.communicate()
    strings_arr = raw_string.split('\n')
    strings_arr = strings_arr[1:]
    processes_dict = {}
    # Example of ps -e ansewer:  7 ?        00:00:00 watchdog/0
    for string in strings_arr:
        splted = string.split()
        key, value = None, None
        if len(splted) == 0: continue
        for item in splted:#looking for process id
            if item.isdigit():
                key = int(item)
                break
        value = splted[-1] # looking for process name
        processes_dict[key] = value
    return processes_dict
有人能把它弄得漂亮点或者提出更好的解决方案吗? 对不起,我的写作错误。英语不是我的母语。

Get。像这样的东西会给你类似的结果

{process.pid: process.exe for process in psutil.process_iter() if process.pid}

谢谢,它很有效。但你的样品是用ACCSES denid制成的。我编辑了它。{process.pid:psutil.process_iter()中进程的process.name(如果process.pid}