psutil的cpu使用率报告与Process Hacker

时间:2017-01-07 10:08:13

标签: python python-3.x process psutil

所以我设法为Windows编写了一个简单的顶级实用程序。

import psutil
import datetime
import time
import shutil
import operator
markedexe=[]
appeared=[]
plst=[]
logfile=open('proc.log', 'a')
logfile.write(str(datetime.datetime.now()).center(90,'-')+'\r\n')
pidmain=psutil.Process().pid
def getproclist():
    for ipls in range(len(plst)):
        if not plst[ipls][2].is_running():
            del plst[ipls]
    for pidi in psutil.pids():
        if pidi > 4 and pidi != pidmain:
            try:
                pss=psutil.Process(pidi)
                pspath=pss.exe()
            except psutil.AccessDenied:
                continue
            except PermissionError:
                continue
            except psutil.NoSuchProcess:
                continue
            if not (pspath in appeared):
                appeared.append(pspath)
                logfile.write('Appeared: "'+pspath+'"\r\n')
            if not (any((pspath,pidi) == pssid[:2] for pssid in plst)):
                plst.append((pspath,pidi,pss))
                ppi=pss.cpu_percent()

#getproclist()
#print(plst)
while(True):
    getproclist()
    cputop=[]
    time.sleep(1)
    for psss in plst:
        try:
            cputop.append((psss[0],psss[1],psss[2].cpu_percent()))
        except psutil.NoSuchProcess:
            continue
    sorted_cputop = sorted(cputop, key=operator.itemgetter(2), reverse=True)
    print('CPUTOP'.center(shutil.get_terminal_size((80, 20))[0], '*'))
    for i in range(min(shutil.get_terminal_size((80, 20))[1]-1, len(sorted_cputop))):
        cpuforthis=str(sorted_cputop[i][2]/psutil.cpu_count())
        pidforthis=str(sorted_cputop[i][1])
        print(sorted_cputop[i][0][(len(cpuforthis)+len(pidforthis)+3)-shutil.get_terminal_size((80, 20))[0]:]+' '+pidforthis+' '+cpuforthis)
        del pidforthis, cpuforthis
    del cputop, sorted_cputop

现在谈谈结果。它们与Project Lasso和Process Hacker不同。在Process Hacker和Process Lasso中,我的脚本和这两种产品的使用率都低于3%。我的脚本说Process Hacker大约是0%而Lasso大约是23%(我有一个四核cpu)。当我在两个实例中运行我的脚本时,它说它使用了大约18% 第一个问题:为什么结果不同?
第二个问题:我应该添加一些time.sleep以减少CPU使用率吗? 第三个问题:我应该更信任哪个任务经理?采矿或加工黑客?

0 个答案:

没有答案