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. VIm快捷操作

    vim快捷操作 移动 行级移动 $ 行尾 0 行头 段级移动 { 段首 } 段尾 屏幕级别 L: 屏幕尾部 H: 屏幕头部 文档级别 G: 文档尾部 1G:头部 nG:文档n行 删除 dd: 删除当前 ...

  2. docsis cm 上线过程(bigwhite)

    扫描与同步下行(SYNC消息) 获取上行参数(UCD消息.MAP消息)  通过测距完成时间偏移等的调整(RNG消息) 设备类型鉴定(可选,DCI消息) 建立IP通道(DHCP)  同步系统时间(TOD ...

  3. 浏览器保存数据给app读取

    https://www.jianshu.com/p/239bab24d249 https://www.jianshu.com/p/43f8a81dd8ca

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

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

  5. Python解析Xmind工具

    使用Xmind写用例 使用Python解析Xmind,统计用例个数 代码: from xmindparser import xmind_to_dict import tkinter as tk fro ...

  6. oracle两种分页查询

    第一种: SELECT * FROM (SELECT A.*, ROWNUM RN FROM (SELECT * FROM table_name) A ) ; 第二种: SELECT * FROM ( ...

  7. 使用re开发python计算器

    #!/usr/bin/env python import reimport functools def minus_operator_handler(formula): '''处理一些特殊的减号运算' ...

  8. ansible常用命令

    一.ansible常用命令 一.ansible命令的常用参数 ansible 默认提供了很多模块来供我们使用.在 Linux 中,我们可以通过 ansible-doc -l 命令查看到当前 ansib ...

  9. vi光标移动

    1.上下左右移动 k  :上移一行 j  :下移一行 h :左移一行 l :右移一行 2.移到当前屏幕的首.中.尾部 H :移到当前屏幕的首部 M    :移到当前屏幕的中部 L :移到当前屏幕的尾部 ...

  10. Oracle 12C CRS-5013

    1.背景 OS:SUSE 12SP3 DB:12.2.0.1.190115 2节点RAC Q:crs alert日志一直刷如下报错 2019-02-12 12:46:18.163 [ORAAGENT( ...