zoukankan      html  css  js  c++  java
  • psutil的几个例子

    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
    

      

  • 相关阅读:
    微信小程序HTTPS
    微信商城-1简介
    va_list
    Event log c++ sample.
    EVENT LOGGING
    Analyze Program Runtime Stack
    unknow table alarmtemp error when drop database (mysql)
    This application has request the Runtime to terminate it in an unusual way.
    How to check if Visual Studio 2005 SP1 is installed
    SetUnhandledExceptionFilter
  • 原文地址:https://www.cnblogs.com/idbeta/p/5262093.html
Copyright © 2011-2022 走看看