基于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实现抓取页面上链接的简单爬虫分享
Jan 21 Python
Python新手实现2048小游戏
Mar 31 Python
Python 中的with关键字使用详解
Sep 11 Python
你所不知道的Python奇技淫巧13招【实用】
Dec 14 Python
python实现生命游戏的示例代码(Game of Life)
Jan 24 Python
django 微信网页授权登陆的实现
Jul 30 Python
python 爬取古诗文存入mysql数据库的方法
Jan 08 Python
python如何解析复杂sql,实现数据库和表的提取的实例剖析
May 15 Python
使用Numpy对特征中的异常值进行替换及条件替换方式
Jun 08 Python
python 实现的车牌识别项目
Jan 25 Python
详解python网络进程
Jun 15 Python
Python音乐爬虫完美绕过反爬
Aug 30 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
ajax在joomla中的原生态应用代码
2012/07/19 PHP
javascript编程起步(第四课)
2007/02/27 Javascript
ExtJS 2.2.1的grid控件在ie6中的显示问题
2009/05/04 Javascript
JavaScript Cookie显示用户上次访问的时间和次数
2009/12/08 Javascript
jquery form表单提交插件asp.net后台中文解码
2010/06/12 Javascript
node.js 一个简单的页面输出实现代码
2012/03/07 Javascript
jQuery筛选器children()案例详解(图文)
2013/02/17 Javascript
js动态控制table的tr、td增加及删除的具体实现
2014/04/30 Javascript
node.js中的fs.lstat方法使用说明
2014/12/16 Javascript
php+ajax+jquery实现点击加载更多内容
2015/05/03 Javascript
AngularJS实现Model缓存的方式
2016/02/03 Javascript
jQuery实现可兼容IE6的滚动监听功能
2017/09/20 jQuery
AngularJS实现的生成随机数与猜数字大小功能示例
2017/12/25 Javascript
在node中使用jwt签发与验证token的方法
2019/04/03 Javascript
[58:12]Ti4第二日主赛事败者组 LGD vs iG 3
2014/07/21 DOTA
Python Web程序部署到Ubuntu服务器上的方法
2018/02/22 Python
Sanic框架蓝图用法实例分析
2018/07/17 Python
Python+OpenCV实现实时眼动追踪的示例代码
2019/11/11 Python
python使用正则表达式去除中文文本多余空格,保留英文之间空格方法详解
2020/02/11 Python
基于Python获取docx/doc文件内容代码解析
2020/02/17 Python
Python面向对象程序设计之继承、多态原理与用法详解
2020/03/23 Python
Pytorch上下采样函数--interpolate用法
2020/07/07 Python
python中Django文件上传方法详解
2020/08/05 Python
Python字符串三种格式化输出
2020/09/17 Python
HTML5实现QQ聊天气泡效果
2017/06/26 HTML / CSS
中专毕业自我鉴定
2013/10/16 职场文书
应届毕业生求职自荐书
2014/01/03 职场文书
关于运动会的稿件
2014/02/02 职场文书
高考备战决心书
2014/03/11 职场文书
2014年安全生产工作总结
2014/11/13 职场文书
如果用一句诗总结你的上半年,你会用哪句呢?
2019/07/16 职场文书
导游词之镇江焦山
2019/11/21 职场文书
Python移位密码、仿射变换解密实例代码
2021/06/27 Python
Win11 S Mode版本泄露 正式上线后叫做Windows 11 SE
2021/11/21 数码科技
Python中 range | np.arange | np.linspace三者的区别
2022/03/22 Python
MySQL三种方式实现递归查询
2022/04/18 MySQL