基于python调用psutil模块过程解析


Posted in Python onDecember 20, 2019

这篇文章主要介绍了基于python调用psutils模块过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

用Python来编写脚本简化日常的运维工作是Python的一个重要用途。在Linux下,有许多系统命令可以让我们时刻监控系统运行的状态,如ps,top,free等等。要获取这些系统信息,Python可以通过subprocess模块调用并获取结果。但这样做显得很麻烦,尤其是要写很多解析代码。

在Python中获取系统信息的另一个好办法是使用psutil这个第三方模块。顾名思义,psutil = process and system utilities,它不仅可以通过一两行代码实现系统监控,还可以跨平台使用,支持Linux/UNIX/OSX/Windows等,是系统管理员和运维小伙伴不可或缺的必备模块。

代码如下

oshelper.py

#encoding=utf-8
import psutil 
import datetime 
 
#查看cpu的信息 
print u"CPU 个数 %s"%psutil.cpu_count() 
print u"物理CPU个数 %s"%psutil.cpu_count(logical=False) 
print u"CPU uptimes" 
print psutil.cpu_times() 
print "" 
 
#查看内存信息 
mem = psutil.virtual_memory()
print u"系统总内存 %s G"%(mem.total/1024/1024/1024) 
print u"系统可用内存 %s G"%(mem.available/1024/1024/1024) 
mem_rate = int(mem.available)/float(mem.total) 
print u"系统内存使用率 %s %%"%int(mem_rate*100) 

#交换分区
swapmem = psutil.swap_memory()
print u"交换分区 %s G"%(swapmem.total/1024/1024/1024) 
print u"交换分区可用 %s G"%(swapmem.free/1024/1024/1024) 
print u"交换分区使用率 %s %%"%int(swapmem.percent) 
#系统启动时间 
print u"系统启动时间 %s"%datetime.datetime.fromtimestamp(psutil.boot_time()).strftime("%Y-%m-%d %H:%M:%S") 
 
#系统用户 
users_count = len(psutil.users()) 
users_list = ",".join([ u.name for u in psutil.users()]) 
print u"当前有%s个用户,分别是%s"%(users_count, users_list) 
 
#网卡,可以得到网卡属性,连接数,当前流量等信息 
net = psutil.net_io_counters() 
bytes_sent = '{0:.2f} Mb'.format(net.bytes_recv / 1024 / 1024) 
bytes_rcvd = '{0:.2f} Mb'.format(net.bytes_sent / 1024 / 1024) 
print u"网卡接收流量 %s 网卡发送流量 %s"%(bytes_rcvd, bytes_sent) 
nis=psutil.net_io_counters(pernic=True)
print u"网卡 " ,tuple(nis)

#进程 进程的各种详细参数 
def show_process(pid):
  try:
    p = psutil.Process(pid) 
  
    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()
  except:
    pass
'''
pids=psutil.pids()
for pid in pids:
  show_process(pid)
'''
with open (r'd:\temp\test.txt','w') as f:
  sys.stdout=f
  for proc in psutil.process_iter():
  '''
    if proc.name() == "w3wp.exe":
      cpu_threshold=proc.cpu_percent(interval=2)/24 
      print proc.name(),proc.create_time(),cpu_threshold
      p.terminate() proc .kill()
      Iterate over all ports this process is listening to 
    for con in proc.get_connections():
      con
  '''
    pa=proc.as_dict()
    print pa.get('name'),pa.get('create_time'),pa.get('pid'),pa.get('status'),pa.get('connections'),pa.get('open_files'),pa.get('cpu_percent'),pa.get('memory_percent'),pa.get('username'),pa.get('num_threads')

print u"当前进程:",psutil.Process(os.getpid()).cmdline()

#磁盘 磁盘的使用量等等 
dps=psutil.disk_partitions()
for dp in dps:
  dp
du=psutil.disk_usage('/')
print u"硬盘总共容量 %s G"%(du.total/1024/1024/1024) 
print u"硬盘可用 %s G"%(du.free/1024/1024/1024)
print u"硬盘已用 %s %%"%(du.percent)

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python访问MySQL封装的常用类实例
Nov 11 Python
Windows和Linux下使用Python访问SqlServer的方法介绍
Mar 10 Python
python生成验证码图片代码分享
Jan 28 Python
python实现装饰器、描述符
Feb 28 Python
python+opencv识别图片中的圆形
Mar 25 Python
python+opencv实现阈值分割
Dec 26 Python
python 返回一个列表中第二大的数方法
Jul 09 Python
python多线程并发及测试框架案例
Oct 15 Python
使用python3批量下载rbsp数据的示例代码
Dec 20 Python
python实现从尾到头打印单链表操作示例
Feb 22 Python
如何使用PyCharm将代码上传到GitHub上(图文详解)
Apr 27 Python
浅析Python中的随机采样和概率分布
Dec 06 Python
python如何使用jt400.jar包代码实例
Dec 20 #Python
基于python使用tibco ems代码实例
Dec 20 #Python
使用python实现数组、链表、队列、栈的方法
Dec 20 #Python
python隐藏类中属性的3种实现方法
Dec 19 #Python
Python合并2个字典成1个新字典的方法(9种)
Dec 19 #Python
关于Python中定制类的比较运算实例
Dec 19 #Python
在python中利用try..except来代替if..else的用法
Dec 19 #Python
You might like
老机欣赏|中国60年代精品收音机
2021/03/02 无线电
php 定界符格式引起的错误
2011/05/24 PHP
总结PHP中DateTime的常用方法
2016/08/11 PHP
使用jquery获取网页中图片高度的两种方法
2013/09/26 Javascript
js中array的sort()方法使用介绍
2014/02/20 Javascript
javascript作用域、作用域链(菜鸟必看)
2016/06/16 Javascript
AngularJS 简单应用实例
2016/07/28 Javascript
JavaScript定义数组的三种方法(new Array(),new Array('x','y')
2016/10/04 Javascript
分析javascript中9 个常见错误阻碍你进步
2017/09/18 Javascript
Three.js利用dat.GUI如何简化试验流程详解
2017/09/26 Javascript
Vue表单及表单绑定方法
2018/09/04 Javascript
详解vuex 渐进式教程实例代码
2018/11/27 Javascript
vue使用prop可以渲染但是打印台报错的解决方式
2019/11/13 Javascript
Echarts在Taro微信小程序开发中的踩坑记录
2020/11/09 Javascript
vue-cli4.0多环境配置变量与模式详解
2020/12/30 Vue.js
[01:14:35]DOTA2上海特级锦标赛B组资格赛#1 Alliance VS Fnatic第一局
2016/02/26 DOTA
Python内置的字符串处理函数整理
2013/01/29 Python
Python中的进程分支fork和exec详解
2015/04/11 Python
利用python求解物理学中的双弹簧质能系统详解
2017/09/29 Python
Python 加密的实例详解
2017/10/09 Python
TensorFlow数据输入的方法示例
2018/06/19 Python
从运行效率与开发效率比较Python和C++
2018/12/14 Python
Python设计模式之职责链模式原理与用法实例分析
2019/01/11 Python
Python标准库使用OrderedDict类的实例讲解
2019/02/14 Python
python识别验证码的思路及解决方案
2020/09/13 Python
Python hashlib模块的使用示例
2020/10/09 Python
python对输出的奇数偶数排序实例代码
2020/12/04 Python
vivo智能手机官方商城:vivo
2016/09/22 全球购物
法国二手手袋、手表和奢侈珠宝购物网站:Collector Square
2018/07/05 全球购物
DC Shoes澳大利亚官方网上商店:购买DC鞋子
2019/10/25 全球购物
物理系毕业生自荐信
2013/11/01 职场文书
企业后勤岗位职责
2014/02/28 职场文书
车间主任岗位职责
2014/03/16 职场文书
个人借款担保书
2014/04/02 职场文书
医药公司开票员岗位职责
2015/04/15 职场文书
班主任培训研修日志
2015/11/13 职场文书