import psutil
import datetime
"""单位都是字节"""
# CPU使用情况
cpu_time = psutil.cpu_times(percpu=False) # 获取cpu信息
# scputimes(user=1916.8778876, system=998.8588028999948, idle=59621.6165874, interrupt=30.2329938, dpc=30.7477971)
cpu_logic_count = psutil.cpu_count() # CPU逻辑个数
cpu_physical_count = psutil.cpu_count(logical=False) # CPU物理个数
cpu_use_rates = psutil.cpu_percent(1, percpu=True) # 1秒内 显示每个逻辑cpu的使用率[27.7, 6.3, 15.4, 0.0, 23.1, 0.0, 30.8, 0.0]
# 内存信息
virtual_memory = psutil.virtual_memory()
# svmem(total=8471117824, available=4227956736, percent=50.1, used=4243161088, free=4227956736)
swap_memory = psutil.swap_memory()
# sswap(total=16942235648, used=4464852992, free=12477382656, percent=26.4, sin=0, sout=0)
# 磁盘信息:一、磁盘利用率;二、IO
psutil.disk_partitions() # [sdiskpart(device='C:\\', mountpoint='C:\\', fstype='NTFS', opts='rw,fixed'),]
psutil.disk_usage(path="C:\\") # sdiskusage(total=85901438976, used=64775012352, free=21126426624, percent=75.4)
psutil.disk_io_counters() # sdiskio(read_count=154974, write_count=84981, read_bytes=5064227840, write_bytes=1976302080, read_time=160, write_time=37)
psutil.disk_io_counters(perdisk=True) # 获取每隔分区的IO和读写信息
# 网络信息
psutil.net_io_counters() # 网络总的io情况 包含:网卡属性,连接数,当前流量等
psutil.net_io_counters(pernic=True)
psutil.boot_time() # 开机时间 时间戳
datetime.datetime.fromtimestamp(psutil.boot_time()).strftime("%Y-%m-%d %H: %M: %S") # 2018-10-17 08: 01: 25
# 进程信息
psutil.pids() # 所有进程id
process = psutil.Process(pid=4)
"""process有很多属性as_dict,children,cmdline,connections,cpu_affinity,cpu_percent,cpu_times,create_time,cwd,environ,exe,
io_counters,ionice,is_running,kill,memory_full_info,memory_info,memory_info_ex,memory_maps,memory_percent,name,nice,
num_ctx_switches,num_handles,num_threads,oneshot,open_files,parent,pid,ppid,resume,send_signal,status,suspend,
terminate,threads,username,wait"""
# 查看系统全部进程
def func():
for pnum in psutil.pids():
p = psutil.Process(pnum)
print("进程名 %-25s 内存利用率 %-30s 进程状态 %-10s 创建时间 %-10s " % (
p.name(), p.memory_percent(), p.status(), p.create_time()))
# 听过psutil的Popen方法启动应用程序,可以跟踪程序的相关信息
from subprocess import PIPE
p = psutil.Popen(["python", "print('hello')"], stdout=PIPE)
p.name() # python.exe
p.username() # PC-20171030OZPE\Administrator
# 管理员信息
psutil.users() # 系统用户s[suser(name='Administrator', terminal=None, host='0.0.0.0', started=1539734491.0, pid=None)]