python使用psutil获取系统(Windows Linux)所有运行进程信息实战:CPU时间、内存使用量、内存占用率、PID、名称、创建时间等;

psutil模块可以跨平台使用,支持Linux/UNIX/OSX/Windows等,它主要用来做系统监控,性能分析,进程管理等。

# 使用pip安装psutil包

pip install psutil

# process_iter方法返回的是一个迭代器,其内容就是当前正在进行的所有进程的信息,例如、CPU时间、内存使用率、名称、PID等;

psutil.process_iter(attrs=None, ad_value=None)
<generator object process_iter at 0x0000015DDB19DC78>

# 迭代获取所有的进程,从进程信息中获取进程的名称以及进程的ID;

# 以为系统以及应用软件的差异,我们在不同系统、不同时间、不同设备上面看的信息是不同的;

# 大家对应的计算机的进程也是各异的;

import psutil
# Iterate over all running process
for proc in psutil.process_iter():try:# Get process name & pid from process object.processName = proc.name()processID = proc.pidprint(processName , ' ::: ', processID)except (psutil.NoSuchProcess, psutil.AccessDenied, psutil.ZombieProcess):pass
System Idle Process  :::  0
System  :::  4
services.exe  :::  92
Registry  :::  120
lsass.exe  :::  300
conhost.exe  :::  304
smss.exe  :::  468
RuntimeBroker.exe  :::  748
rishiqing.exe  :::  760
svchost.exe  :::  768
csrss.exe  :::  808
svchost.exe  :::  896
.......
...........................

#process_iter() 函数可以用来产生生成器中的进程对象,而进程对象Process提供一个as_dict()函数用来以字典的形式获取用户期望的进程信息;

# 迭代获得的所有进程并抽取进程信息中的:名称、CPU占用率、PID(进程标识符)

# 可以获得的完整信息包括:

'pid', 'memory_percent', 'name', 'cpu_times', 'create_time', 'memory_info' etc.

PID(进程标识符)、内存占用率、名称、CPU时间、创建时间、内存信息 等;

其他更具体的可以获得信息可以参考psutil的API文档;

psutil提供的进程函数可以以字典的形式返回任何用户指定的内容;

import psutil
listOfProcessNames = list()
# Iterate over all running processes
for proc in psutil.process_iter():# Get process detail as dictionarypInfoDict = proc.as_dict(attrs=['pid', 'name', 'cpu_percent'])# Append dict of process detail in listlistOfProcessNames.append(pInfoDict)listOfProcessNames
[{'name': 'System Idle Process', 'cpu_percent': 768.5, 'pid': 0},{'name': 'System', 'cpu_percent': 1.5, 'pid': 4},{'name': 'services.exe', 'cpu_percent': 0.5, 'pid': 92},{'name': 'Registry', 'cpu_percent': 0.0, 'pid': 120},{'name': 'lsass.exe', 'cpu_percent': 0.0, 'pid': 300},{'name': 'conhost.exe', 'cpu_percent': 0.0, 'pid': 304},{'name': 'smss.exe', 'cpu_percent': 0.0, 'pid': 468},{'name': 'RuntimeBroker.exe', 'cpu_percent': 0.0, 'pid': 748},{'name': 'rishiqing.exe', 'cpu_percent': 0.0, 'pid': 760},{'name': 'svchost.exe', 'cpu_percent': 0.0, 'pid': 768},{'name': 'csrss.exe', 'cpu_percent': 0.0, 'pid': 808},{'name': 'svchost.exe', 'cpu_percent': 0.0, 'pid': 896},{'name': 'wininit.exe', 'cpu_percent': 0.0, 'pid': 904},
.......
...........................
]

# 获取当前系统的进程并按照内存使用量排序;

# 它将遍历所有运行进程的列表,并将id和name作为dict获取内存使用情况。

# Process类提供了进程的内存信息,它从进程中获取虚拟内存使用情况,然后将每个进程的字典添加到一个列表中。最后根据关键虚拟机对字典列表进行排序,所以进程列表会根据内存使用情况进行排序。

import psutil
def getListOfProcessSortedByMemory():'''Get list of running process sorted by Memory Usage'''listOfProcObjects = []# Iterate over the listfor proc in psutil.process_iter():try:# Fetch process details as dictpinfo = proc.as_dict(attrs=['pid', 'name', 'username'])pinfo['vms'] = proc.memory_info().vms / (1024 * 1024)# Append dict to listlistOfProcObjects.append(pinfo);except (psutil.NoSuchProcess, psutil.AccessDenied, psutil.ZombieProcess):pass# Sort list of dict by key vms i.e. memory usagelistOfProcObjects = sorted(listOfProcObjects, key=lambda procObj: procObj['vms'], reverse=True)return listOfProcObjectsgetListOfProcessSortedByMemory()
[{'name': 'python.exe','username': 'user','pid': 16276,'vms': 966.26953125},{'name': 'dwm.exe', 'username': None, 'pid': 26132, 'vms': 709.0234375},{'name': 'pythonw.exe','username': 'user','pid': 23660,'vms': 564.61328125},{'name': 'mcshield.exe', 'username': None, 'pid': 6932, 'vms': 469.2578125},{'name': 'test.exe','username': 'user','pid': 16292,'vms': 456.34765625},.......
...........................
]

# 完整代码参考如下:

import psutil
def getListOfProcessSortedByMemory():'''Get list of running process sorted by Memory Usage'''listOfProcObjects = []# Iterate over the listfor proc in psutil.process_iter():try:# Fetch process details as dictpinfo = proc.as_dict(attrs=['pid', 'name', 'username'])pinfo['vms'] = proc.memory_info().vms / (1024 * 1024)# Append dict to listlistOfProcObjects.append(pinfo);except (psutil.NoSuchProcess, psutil.AccessDenied, psutil.ZombieProcess):pass# Sort list of dict by key vms i.e. memory usagelistOfProcObjects = sorted(listOfProcObjects, key=lambda procObj: procObj['vms'], reverse=True)return listOfProcObjectsdef main():print("*** Iterate over all running process and print process ID & Name ***")# Iterate over all running processfor proc in psutil.process_iter():try:# Get process name & pid from process object.processName = proc.name()processID = proc.pidprint(processName , ' ::: ', processID)except (psutil.NoSuchProcess, psutil.AccessDenied, psutil.ZombieProcess):passprint('*** Create a list of all running processes ***')listOfProcessNames = list()# Iterate over all running processesfor proc in psutil.process_iter():# Get process detail as dictionarypInfoDict = proc.as_dict(attrs=['pid', 'name', 'cpu_percent'])# Append dict of process detail in listlistOfProcessNames.append(pInfoDict)# Iterate over the list of dictionary and print each elemfor elem in listOfProcessNames:print(elem)print('*** Top 5 process with highest memory usage ***')listOfRunningProcess = getListOfProcessSortedByMemory()for elem in listOfRunningProcess[:5] :print(elem)
if __name__ == '__main__':main()

参考:https://github.com/giampaolo/psutil

参考:Python : Get List of all running processes and sort by highest memory usage

参考:python 实时得到cpu和内存的使用情况方法

参考:.NET(C#):获取进程的CPU使用状况

参考:Python - get process names,CPU,Mem Usage and Peak Mem Usage in windows

参考:psutil 4.0.0 and how to get “real” process memory and environ in Python

参考:Python编程——psutil模块的使用详解

python使用psutil获取系统(Windows Linux)所有运行进程信息实战:CPU时间、内存使用量、内存占用率、PID、名称、创建时间等;相关推荐

  1. Python 第三方模块之 psutil - 获取系统运行的进程和系统利用率信息

    一.psutil模块: 官方网址:http://pythonhosted.org/psutil/ 1.psutil是一个跨平台库(http://pythonhosted.org/psutil/)能够轻 ...

  2. python模块psutil 获取系统信息

    CPU信息 1. 查看CPU信息:cpu_times() 以namedtuple的形式返回系统范围内的CPU时间.每个CPU时间表示CPU在给定模式下花费的秒数. 当percpu为True时,返回每个 ...

  3. python netifaces模块 获取本机IP,网关等信息

    简介 在Linux系统中,我们可以通过ifconfig,route等shell命令来查看系统接口配置,网关和路由等信息.通过shell的正则表达式功能,通过系列复杂操作,我们可以从字符串中提取出相关的 ...

  4. linux 实验 广技师 进程管理与系统监视,Linux系统管理之进程管理

    在正式的工作环境中,作为Linux系统管理员,监视系统进程的运行情况应该是日常的工作之一.那么,到底什么是进程呢? 什么是进程 进程是正在执行的一个程序或命令,每个进程都是一个运行的实体,都有自己的地 ...

  5. windows进程管理器_系统变慢?WMI进程导致的CPU高占用解决

    我们有时会遇到系统变慢的情况,查看资源任务管理窗口发现是WMI导致的CPU高占用所致.那么,WMI究竟为何物,能否解除由它导致的CPU高占用,如何解除? 1. 查明WMI的来龙去脉 WMI是Windo ...

  6. Linux:查看服务器信息,CPU、内存、系统版本、内核版本等

    还是最近工作的总结,性能验证要根据服务器的配置才能做进一步的结论论证,废话不多说 目录 查看Linux内核版本 查看Linux系统版本 CPU 查看CPU信息(型号) 物理CPU个数 每个物理CPU中 ...

  7. linux保存动态进程信息,Linux 命令 - top: 动态显示进程信息

    命令格式 top -hv | -abcHimMsS -d delay -n iterations -p pid [, pid ...] 命令参数 -a 根据内存的使用排序. -b 以批处理模式操作. ...

  8. Linux strace 跟踪进程信息

    简介 strace常用来跟踪进程执行时的系统调用和所接收的信号. 在Linux世界,进程不能直接访问硬件设备,当进程需要访问硬件设备(比如读取磁盘文件,接收网络数据等等)时,必须由用户态模式切换至内核 ...

  9. linux查看native进程,Android 分析应用程序占用native内存

    Android 应用开发大家都知道可以通过DDMS来查看应用程序进程占用的内存大小:然而Native 内存并不能在虚拟堆上看到:Android系统基于Linux,这样的话其具备Linux的大多数特性: ...

最新文章

  1. HTTP客户端连接,选择HttpClient还是OkHttp?
  2. 求二叉树第K层的节点个数+求二叉树叶子节点的个数
  3. AD9834 DDS 使用经验
  4. 左神算法:可见的山峰对数量(有重复值的情况)(Java版)
  5. node作为php中转带参数,Nodejs中使用命令行如何进行传参(代码)
  6. echarts bar 控制大小_echarts基本配置参数
  7. 可靠性测试设备技术含量_电气自动化控制设备的可靠性测试(1)
  8. 修改Sql Server 2000数据库名称
  9. Pychram中如何导入其他文件的.py文件
  10. latex导数_使用LaTeX语法编写数学公式(持续更新)
  11. ArcGIS重分类之后统计各类别面积
  12. Handler机制整理
  13. JavaScript提示框
  14. python检测按键按下_如何检测按键是否被按下?
  15. 现在汉语也能编程了!学编程,英语还重要吗?
  16. 数据结构(四)—— 图(1):什么是图
  17. 【技术类】Landsat 7 ETM+影像条带去除妙招
  18. ubuntu16 环境配置
  19. fiddler 抓取手机上点击微信公众号的链接
  20. 因为意外的遇到文件尾,PS无法打开怎么办?

热门文章

  1. 安恒赛php_安恒11月月赛周周练writeup
  2. bmaplib vue 调用_Vue-cli3/4中使用AMap、BMap
  3. 安卓超过两行就加省略号_CSS文本超出2行就隐藏并且显示省略号
  4. confirm弹窗确定按钮换文字_第二章(第9节):弹窗处理
  5. 视觉三位重建:计算机视觉的核心任务
  6. 3D曲面重建之移动最小二乘法
  7. 高校宣布已建成世界一流大学,教育部回应!
  8. java button名字_如何实现java按钮的名字输出到文本框鄙人刚学java,题目如 爱问知识人...
  9. antd Form.Item 中如何获取到Select的label值
  10. mysql 1449 : The user specified as a definer ('root'@'%') does not exist