psutil
能够轻松实现获取系统运行的进程和系统利用率
安装、导入模块
pip install psutil # 安装
import psutils # 导入
获取系统性能信息
CPU信息
1.使用cpu_times()方法获取CPU的完整信息:
psutil.cpu_times()
---------------------------------------------------------------------------------------
scputimes(user=15606.75, system=14908.984374999942, idle=323725.765625, interrupt=685.906
25, dpc=571.21875)
2.获取单项数据,例如用户user的CPU时间比:
psutil.cpu_times().user
3.获取CPU的个数:
psutil.cpu_count() # 默认logical=True,获取逻辑个数
psutil.cpu_count(logical=False) # 获取CPU的物理个数
内存信息
获取物理内存总大小和已使用内存:
mem = psutil.virtual_memory()
mem # 显示所有的参数,svmem(total=8494747648, available=3692544000, percent=56.5, used=4802203648, free=3692544000)
mem.total # 总内存
mem.used # 已使用内存
m.free # 获取空闲内存数
psutil.swap_memory() # 获取SWAP分区信息,sswap(total=12118626304, used=8851152896, free=3267473408, percent=73.0, sin=0, sout=0)
磁盘信息
磁盘IO信息包括read_count(读IO数),write_count(写IO数),read_bytes(IO写字节数),read_time(磁盘读时间),write_time(磁盘写时间)
1.获取磁盘完整信息:
psutil.disk_partitions()
2.获取分区的使用情况:
psutil.disk_usage('C:/') # 里面参数为所在磁盘分区,获取分区表信息,sdiskusage(total=129393225728, used=82884608000, free=46508617728, percent=64.1)
3.获取硬盘总的IO个数:
psutil.disk_io_counters() # 获取磁盘IO总个数,sdiskio(read_count=577776, write_count=479420, read_bytes=18559246848, write_bytes=12466834944, read_time=506, write_time=517)
psutil.disk_io_counters(perdisk=True) # 获取单个分区的IO个数
网络信息
网络信息与磁盘IO信息类似,包括byes_sent(发送字节数),byte_recv=xx(接受字节数),pack-ets_sent=xx(发送字节数),pack-ets_recv=xx(接收数据包数)
获取网络总的IO信息:
psutil.net_io_counters()
psutil.net_io_counters(pernic=True) # 输出单个网络接口的IO信息
其他系统信息
1.返回当前登录系统的用户信息:
psutil.users()
2.获取开机时间:
psutil.boot_time() # 以Linux时间戳格式返回
# 如果想要转换成自然时间格式:
datetime.datetime.fromtimestamp(psutil.boot_time()).strftime("%Y-%m-%d %H:%M:%S")
进程管理
进程信息
获取当前应用程序的运行状态,包括进程的启动时间,查看设置CPU亲和度,内存使用率,IO信息,socket连接,线程数等
1.列出所有进程PID
psutil.pids()
2.获取单个进程的名字,路径状态
p = psutil.Process(716)
p.name() # 进程名
p.exe() # 进程bin路径
p.cwd() # 进程工作目录的绝对路径
p.status() # 进程状态
p.create_time() # 进程创建时间
p.uids() # 进程uid信息
p.gids() # 进程gid信息
p.cpu_times() # 进程CPU时间信息
p.cpu_affinity() # get进程的亲和度
p.memory_percent() # 进程内存使用率
p.memory_info() #进程内存rss,vms信息
p.io_counters() #进程的IO信息,包括读写IO数字及参数
p.connections() #返回进程列表
p.num_threads() # 进程开启的线程数
popen类的使用
popen类可以获取用户启动的应用程序进程信息。
p = putil.Popen(["/usr/bin/python","-c","print('Hello')"],stdout=subprocess.PIPE)
p.name()
p.username() # 创建进程的用户
p.communicate()
('hellon',None)
p.cpu_times() # 得到进程运行的CPU时间