您的位置:首页 > 编程语言 > Python开发

python中psutil模块使用相关笔记

2016-10-06 15:56 274 查看
*****************************
本文所有内容仅供学习交流使用,欢迎留言共同学习进步。。。。。
*****************************
关于psutil模块的作用和安装介绍,在这样就不费话,请自行百度,资料还是很多的,我总结的大部分也是抄了别人的,只是加上了我自已的思想,内容上可能更全面,后序会有时间会继续补充,欢迎留言总结。。。。
实验环境:centos6.5 python2.6 psutil4.3

轻松获取磁盘、网络、CPU、内存等信息,应用于系统监控、分析和限制系统资源及进程的管理。等同于命令行工具ps,top,who,df,kill,df等,大小单位一般采用字节计算。1、获取CPU信息***********CPU完整信息的获取一般用cpu_times方法>>> psutil.cpu_times()scputimes(user=83.269999999999996, nice=0.0, system=71.159999999999997, idle=10073.77, iowait=51.479999999999997, irq=0.37, softirq=11.609999999999999, steal=0.0, guest=0.0)***********user time:执行用户进程的时间白分比***********system time:执行内核进程和中断的时间白分比***********iowait:由于IO等待而使CPU处于idle空闲状态的时间百分比***********idle:CPU处于idle状态的时间百分比>>> psutil.cpu_times().user83.329999999999998***********其他信息的获取加上对于的名称即可***********CPU物理和逻辑个数获取如下,默认的logical值为True>>> psutil.cpu_count()4>>> psutil.cpu_count(logical=False)42、内存信息获取***********内存信息的获取主要使用virtual_memory,swap主要使用swap_memory方法>>> mem = psutil.virtual_memory()>>> memsvmem(total=4002598912, available=3468185600, percent=13.4, used=786452480, free=3216146432, active=478048256, inactive=175960064, buffers=14032896, cached=238006272, shared=241664)>>> mem.total4002598912***********其他信息的获取加上对于的名称即可***********默认获取的单位为字节,补充 1B(字节)=8Bit(比特,二进制) 1KB=1024B 1M=1024KB>>> print (mem.total/1024/1024)3817 3、硬盘信息的获取***********磁盘的利用率和io,获取方法分别为disk_usage和disk_io_counters>>> psutil.disk_partitions()[sdiskpart(device='/dev/mapper/VolGroup-lv_root', mountpoint='/', fstype='ext4', opts='rw'), sdiskpart(device='/dev/sda1', mountpoint='/boot', fstype='ext4', opts='rw')]************获取特定分区信息>>> psutil.disk_usage('/')sdiskusage(total=29138886656, used=2213924864, free=25444794368, percent=8.0)>>> psutil.disk_io_counters()sdiskio(read_count=27337, write_count=5490, read_bytes=503639040, write_bytes=34735104, read_time=196088, write_time=133960, read_merged_count=2308, write_merged_count=2989, busy_time=138225)**************psutil.disk_io_counters方法获取的是硬盘总的io数和读取信息,单个的获取加如下参数>>> psutil.disk_io_counters(perdisk=True){'dm-1': sdiskio(read_count=297, write_count=0, read_bytes=1216512, write_bytes=0, read_time=625, write_time=0, read_merged_count=0, write_merged_count=0, busy_time=129), 'sda2': sdiskio(read_count=12356, write_count=1248, read_bytes=250827776, write_bytes=17362944, read_time=66202, write_time=27460, read_merged_count=2066, write_merged_count=2989, busy_time=68652), 'dm-0': sdiskio(read_count=14089, write_count=4239, read_bytes=249193472, write_bytes=17362944, read_time=128287, write_time=106420, read_merged_count=0, write_merged_count=0, busy_time=68391), 'sda1': sdiskio(read_count=595, write_count=3, read_bytes=2401280, write_bytes=9216, read_time=974, write_time=80, read_merged_count=242, write_merged_count=0, busy_time=1053)}>>>
4、网络信息的获取网络io和磁盘io信息的获取方法差不多,主要使用net_io_counters方法,单个加上pernic=True参数>>> psutil.net_io_counters()snetio(bytes_sent=1505767261, bytes_recv=758446854, packets_sent=661923, packets_recv=398386, errin=0, errout=0, dropin=0, dropout=0)>>> psutil.net_io_counters(pernic=True){'lo': snetio(bytes_sent=740519540, bytes_recv=740519540, packets_sent=110160, packets_recv=110160, errin=0, errout=0, dropin=0, dropout=0), 'eth0': snetio(bytes_sent=765273135, bytes_recv=17943634, packets_sent=551832, packets_recv=288318, errin=0, errout=0, dropin=0, dropout=0)}>>> 5、获取开机时间,当前登录用户,当前系统时间>>> psutil.users()[suser(name='root', terminal='pts/0', host='192.168.78.1', started=1475764224.0), suser(name='root', terminal='pts/1', host='192.168.78.1', started=1475764224.0), suser(name='root', terminal='pts/2', host='192.168.78.1', started=1475764224.0), suser(name='root', terminal='pts/3', host='192.168.78.1', started=1475764224.0)]>>> psutil.boot_time()1475764119.0>>> import datetime>>> datetime.datetime.fromtimestamp(psutil.boot_time ()).strftime("%Y-%m-%d %H: %M: %S")'2016-10-06 22: 28: 39'>>> 6、查看系统全部进程>>> psutil.pids()[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 74, 75, 76, 77, 78, 80, 81, 111, 181, 182, 183, 186, 187, 327, 329, 346, 347, 432, 539, 741, 742, 777, 790, 981, 1030, 1046, 1058, 1096, 1172, 1180, 1184, 1185, 1195, 1197, 1199, 1201, 1203, 1205, 1213, 1214, 1215, 1219, 1235, 1239, 1255, 1259, 1275, 1279, 1297, 1332, 1348, 1357, 1362]*******************查看单个进程>>> p = psutil.Process(1362) *****数字为上述的进程号p.name() #进程名 p.exe() #进程的bin路径 p.cwd() #进程的工作目录绝对路径 p.status() #进程状态 p.create_time() #进程创建时间 p.uids() #进程uid信息 p.gids() #进程的gid信息 p.cpu_times() #进程的cpu时间信息,包括user,system两个cpu信息 p.cpu_affinity() #get进程cpu亲和度,如果要设置cpu亲和度,将cpu号作为参考就好 p.memory_percent() #进程内存利用率 p.memory_info() #进程内存rss,vms信息 p.io_counters() #进程的IO信息,包括读写IO数字及参数 p.connectios() #返回进程列表 p.num_threads() #进程开启的线程数 听过psutil的Popen方法启动应用程序,可以跟踪程序的相关信息 from subprocess import PIPE p = psutil.Popen(["/usr/bin/python", "-c", "print('hello')"],stdout=PIPE) p.name() p.username()
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  python psutil