所以我设法为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使用率吗?
第三个问题:我应该更信任哪个任务经理?采矿或加工黑客?