python进行系统相关操作时都有点力不从心,尤其是windows下,比如获取进程的cpu、内存等等,可以通过以下方法可以达到这种要求:

1、安装pywin32、psutil这种第三方库,里面提供了很多相关的api

2、用c++写,编译成dll,把相关api导出,让python去调用

3、通过ctypes去调用windows api实现

psutil是跨平台的,不过功能比较弱,举几个例子

##根据进程名获取PID
def nametopid(x):
num=[]
for r in psutil.process_iter():
aa = str(r)
f = re.compile(x,re.I)
if f.search(aa):
num.append( aa.split('pid=')[1].split(',')[0] )
return num
print nametopid('chrome') ##根据进程名获取进程全路径
def nametopath(x):
num=[]
for i in nametopid(x):
num.append(psutil.Process(int(i)).exe())
return num
print nametopath('notepad') ##根据PID获取进程名
def pidtoname(x):
return psutil.Process(int(x)).name()
# print pidtoname('sasa') ##根据PID获取进程全路径
def pidtopath(x):
return psutil.Process(int(x)).exe()
# print pidtopath('1280') ##杀进程
def killprocess(x):
if x.isdigit():
psutil.Process(int(x)).terminate()
else:
for i in nametopid(x):
psutil.Process(int(i)).terminate()
# killprocess('notepad')
# killprocess('1111') ##杀进程树
def killprocesstree(x):
if x.isdigit():#根据pid杀
for pid in psutil.pids():
if psutil.Process(int(pid)).ppid()==int(x):
psutil.Process(int(pid)).terminate()
psutil.Process(int(x)).terminate()
else:#根据进程名杀
try:
for pid in psutil.pids():#杀子进程
if str(psutil.Process(int(pid)).ppid()) in nametopid(x): #if 'a' in theList:
psutil.Process(int(pid)).terminate()
for i in nametopid(x):#杀父进程
psutil.Process(int(i)).terminate()
except Exception,info:
return "input the right pname!"
# killprocesstree('procexp.exe') ##获取进程内存占用 , psutil does not expose the private working set
def getprocessmem(x):
if x.isdigit():
return psutil.Process(int(x)).memory_info()
else:
for i in nametopid(x):
return psutil.Process(int(i)).memory_info()
# print getprocessmem('236') ##获取进程CPU占用
def getprocesscpu(x):
if x.isdigit():
return psutil.Process(int(x)).cpu_percent(interval=1.0) / psutil.cpu_count()
else:
num=[]
for i in nametopid(x):
num.append(psutil.Process(int(i)).cpu_percent(interval=1.0) / psutil.cpu_count() )
return num

  

psutil的几个例子的更多相关文章

  1. python基础之psutil模块和发邮件(smtplib和yagmail)

    除了内建的模块外,Python还有大量的第三方模块. 基本上,所有的第三方模块都会在PyPI - the Python Package Index上注册,只要找到对应的模块名字,即可用pip安装. 此 ...

  2. psutil模块安装指南(win与linux)

    1.windows下psutil模块安装: https://pypi.python.org/packages/3.4/p/psutil/ 下载符合版本的软件包下载,然后安装即可. 2.ubuntu下载 ...

  3. Python 中psutil 模块的安装

    第一步下载psutil 的安装包 网址:https://pypi.python.org 第二步解压 .tar.gz cd psutil- 第三步安装: python setup.py build py ...

  4. psutil模块

    python模块之psutil 一.psutil模块 1.介绍 psutil是一个跨平台库(http://pythonhosted.org/psutil/)能够轻松实现获取系统运行的进程和系统利用率( ...

  5. psutil 跨平台根据程序名杀进程

    笔者在项目中遇到过需要根据进程名杀进程的需求,利用python库psutil实现了此功能. 模块地址: https://pypi.python.org/pypi/psutil/   psutil功能 ...

  6. psutil库

    psutil是一个非常强大的第三方库,用法简单,这里主要是做一下梳理. 先看看官方说明: psutil (python system and process utilities) is a cross ...

  7. python--cProfile,memory_profiler,psutil

    关于测试代码用了多长时间,我们之前介绍了timeit.相较于timeit,python中还有一个更加强大的模块,cProfile模块 (提到cProfile,其实还有一个profile,但profil ...

  8. python运维开发常用模块(一)psutil

    1.模块简介 psutil是一个跨平台库(http://code.google.com/p/psutil/),能够轻 松实现获取系统运行的进程和系统利用率(包括CPU.内存.磁盘.网 络等)信息.它主 ...

  9. SQLServer地址搜索性能优化例子

    这是一个很久以前的例子,现在在整理资料时无意发现,就拿出来再改写分享. 1.需求 1.1 基本需求: 根据输入的地址关键字,搜索出完整的地址路径,耗时要控制在几十毫秒内. 1.2 数据库地址表结构和数 ...

随机推荐

  1. CAJ转换成PDF在线方法是什么

    做学术性的朋友经常会需要将CAJ文件转换成PDF文件,毕竟CAJ文件只能在CAJ阅读器上显示,但是有很多转换软件并不能很好的完成转换,小编今天就为大家讲解一下CAJ转换成PDF在线方法是什么,大家要认 ...

  2. 上传及更新代码到github(以及如何在vscode上提交自己的代码)

    上传本地代码 第一步:去github上创建自己的Repository,创建页面如下图所示: 红框为新建的仓库的https地址 第二步: echo "# Test" >> ...

  3. TPS6116x 1-wire总线的分析与驱动实现

    1-wire总线的特点 1-wire协议是用一条数据线作为总线进行数据通信的协议. 1-wire总线有以下特点: 1. 可以组建网络,个数没有限制. 2. 使用GPIO的特性就可以,不需要专门的控制器 ...

  4. 写一篇博文介绍JSP

    一.JSP概述 JSP全名为Java Server Pages,中文名叫java服务器页面,其根本是一个简化的Servlet设计,它是由Sun Microsystems公司倡导.许多公司参与一起建立的 ...

  5. Linux_磁盘分布_以及分区

    运用 Xshell  工具链接到你的服务器 1.     Fdisk -l    这是查看磁盘挂载列表情况 2.      Fdisk /dev/vdc   这是分区这个磁盘   m    是查看信息 ...

  6. 2018-2019-2 《网络对抗技术》Exp0 Kali安装 Week1 20165317

    第一周作业 Kali的安装 Kali的下载 从kali官网下载kali-linux 64-bit 版本. Kali的安装 由于在娄老师的课上使用virtualbox, 所以我习惯性使用virtual ...

  7. 洛谷P4456 交错序列[CQOI2018] dp+数论

    正解:dp 解题报告: 传送门 首先可以先拆下这个贡献式,为了方便之后设状态什么的,把式子转成和ny有关,就成了 \(\sum \left ( n-i \right )^{a}\cdot i^{b}\ ...

  8. cnblogs

    想注册个博客园来着的,看着大佬们的博客都十分漂亮,但是发现我因为太菜没有办法搞定美化问题. 以后再说吧 写写东西,反正也没人看,但是写的时候尽量按给别人看的格式写吧 2019.3.15 开通博客 计划 ...

  9. T-SQL语言基础(2)之SQL Server体系结构

    SQL Server 体系结构 SQL Server 实例 SQL Server 实例是指安装的一个 SQL Server 数据库引擎/服务.在同一台计算机上可以安装 SQL Server 的多个实例 ...

  10. Java集合框架面试题目

    1.为什么Map接口不继承Collection 接口? Set是无序集合,并且不允许重复的元素 List是有序的集合,并且允许重复的元素 而Map是键值对 它被视为是键的set和值的set的组合 Ma ...