基于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共享引用(多个变量引用)示例代码
Dec 04 Python
Django1.7+python 2.78+pycharm配置mysql数据库教程
Nov 18 Python
python实现的简单猜数字游戏
Apr 04 Python
Python检测QQ在线状态的方法
May 09 Python
Python 迭代器与生成器实例详解
May 18 Python
python分布式环境下的限流器的示例
Oct 26 Python
用tensorflow构建线性回归模型的示例代码
Mar 05 Python
Python 实现某个功能每隔一段时间被执行一次的功能方法
Oct 14 Python
Django 批量插入数据的实现方法
Jan 12 Python
Python Matplotlib绘图基础知识代码解析
Aug 31 Python
详解pycharm自动import所需的库的操作方法
Nov 30 Python
Python  lambda匿名函数和三元运算符
Apr 19 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
PHP生成带有雪花背景的验证码
2008/09/28 PHP
UTF8编码内的繁简转换的PHP类
2009/07/09 PHP
PHP json格式和js json格式 js跨域调用实现代码
2012/09/08 PHP
解析百度搜索结果link?url=参数分析 (全)
2012/10/09 PHP
php对csv文件的读取,写入,输出下载操作详解
2013/08/10 PHP
Javascript类型转换的规则实例解析
2016/02/23 Javascript
使用jQuery制作基础的Web图片轮播效果
2016/04/22 Javascript
js基于cookie方式记住返回页面用法示例
2016/05/27 Javascript
浅谈js中同名函数和同名变量的执行问题
2017/02/12 Javascript
JS逻辑运算符短路操作实例分析
2018/07/09 Javascript
使用canvas实现一个vue弹幕组件功能
2018/11/30 Javascript
Layui 数据表格批量删除和多条件搜索的实例
2019/09/04 Javascript
jQuery实现图片随机切换、抽奖功能(实例代码)
2019/10/23 jQuery
js实现无缝轮播图
2020/03/09 Javascript
vue 解决兄弟组件、跨组件深层次的通信操作
2020/07/27 Javascript
Vue-cli 移动端布局和动画使用详解
2020/08/10 Javascript
Python实现对象转换为xml的方法示例
2017/06/08 Python
python设定并获取socket超时时间的方法
2019/01/12 Python
python制作抖音代码舞
2019/04/07 Python
详解用Python实现自动化监控远程服务器
2019/05/18 Python
Python read函数按字节(字符)读取文件的实现
2019/07/03 Python
Python图像处理库PIL的ImageFont模块使用介绍
2020/02/26 Python
django实现模板中的字符串文字和自动转义
2020/03/31 Python
Django之choices选项和富文本编辑器的使用详解
2020/04/01 Python
python实现批量命名照片
2020/06/18 Python
解决pyinstaller 打包exe文件太大,用pipenv 缩小exe的问题
2020/07/13 Python
Python创建文件夹与文件的快捷方法
2020/12/08 Python
详解HTML5 LocalStorage 本地存储
2016/12/23 HTML / CSS
艺术用品:Arteza
2018/11/25 全球购物
美国饼干礼物和美食甜点购买网站:Cheryl’s
2020/05/28 全球购物
中专生职业生涯规划书范文
2013/12/29 职场文书
欢迎家长标语
2014/10/08 职场文书
城管个人总结
2015/02/28 职场文书
小学体育课教学反思
2016/02/16 职场文书
想创业成功,需要掌握这些要点
2019/12/06 职场文书
css3实现背景图片半透明内容不透明的方法示例
2021/04/13 HTML / CSS