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. c#拷贝整个文件夹到指定文件夹下(非递归)

    public static void CopyEntireDir(string sourcePath, string destPath) { //Now Create all of the direc ...

  2. c#清空文本文件

    FileStream fs = new FileStream(@"C:\log.txt", FileMode.Truncate, FileAccess.ReadWrite); fs ...

  3. Go笔记

    #Go在win下安装 1. https://golang.google.cn/dl/下载 amd64 版本的zip包 2. 解压后将bin目录添加入path 3. go version可显示版本信息

  4. Nginx(一)-windows下的安装配置

    第一步 下载 官网下载地址 因为只是测试这里选择最新版本1.13.9 下载完成得到zip压缩包 解压后得到如下目录 第二步  启动nginx 注意不要直接双击nginx.exe,这样会导致修改配置后重 ...

  5. RoR - Nested Resources, Security ,pagination

    root to: 'xxx'  默认root路径 Nested Resource: Rails.application.routes.draw do resources :books do resou ...

  6. 美团笔试(web前端)

    分为3部分: 1.逻辑推理.行测.找规律: 2.html css javascript的简单的选择题,以及数据结构,操作系统方面的知识: 3.两道编程题,第一道题关于竞赛报名,有限制的分组,输入N和M ...

  7. MVC Views文件夹下js无法访问问题解决方案

    出现这个问题是因为webconfig做的限制,可修改相应Views下的webconfig文件来解决. <system.webServer> <handlers> <rem ...

  8. 前端 CSS 目录

    前端 CSS 介绍 前端 CSS语法 前端 CSS 注释

  9. PHP多线程 curl_multi_init 的使用

    php中可以通过CURL处理HTTP请求,其中curl_init()是单线程模式,如果需要对事务处理走多线程模式,那么就需要用到curl_multi_init()函数. 本案例用来测试大并发的情况下 ...

  10. Kafka笔记6(数据传递的可靠性)

    Kafka保证分区消息的顺序,“先入先出” 只有当消息被写入分区的所有副本时,才被认为已提交的 只要有一个副本是活跃的,已提交的消息就不会丢失 消费者只能读取已经提交的消息 如果一个或多个副本在同步/ ...