指定进程名来抓取进程的CPU,内存使用情况

上代码前说两句,这里使用了psutil的库使用前需要pip一下,而这玩意儿直接抓cpu好像会因为某些原因效果不理想,所以抄了网上的代码取10次的平均值.

# !/user /env /bin python3

# !author: Luwdig

import psutil

import time

import re, sys

def processinfo(x):

p = psutil.process_iter()

tlp = 0

try:

for r in p:

aa = str(r)

f = re.compile(x, re.I)

if f.search(aa):

tlp = int(aa.split('pid=')[1].split(',')[0])

# 检索pid列表并获取传入值的pid

return tlp

except (psutil.NoSuchProcess):

print('Ransomware process is caught, but the process does '

'not exist (PID: %d)' % aa.pid)

def getinfo(tlp):

p = psutil.Process(tlp)

cpu_list = []

for i in range(10):

p_cpu = p.cpu_percent(interval=0.1)

cpu_list.append(p_cpu)

cpu = 0.00

cpu = float(sum(cpu_list))/len(cpu_list)/10

# 循环10次cpu使用值并取平均值

try:

pid = p.pid

name = p.name()

Memory = p.memory_percent(memtype="rss") / 2

localtime = time.strftime('%H:%M:%S', time.localtime(time.time()))

# 取进程pid 进程名 进程内存

except IOError as e:

print(e)

else:

# return pid, name, Memory, cpu, time

print("Time:%s" % (localtime), "PID:%s" % (pid), "Name:%s" % (name),

"Memory=%.3f%%" % (Memory), "CPU=%.2f%%" % (cpu * 2))

if __name__ == "__main__":

while 0 < 1:

s = processinfo('uibot.exe')

getinfo(s)

if False:

print("打开程序")

else:

continue

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐