废话不多说,直接上代码吧
# coding=utf-8
# 进程检测程序
import psutil
import types
import datetime
def get_pid_by_pname(str_proc_name):
map_proc_info = {}
for proc in psutil.process_iter():
if proc.name() == str_proc_name:
map_proc_info[proc.pid] = str_proc_name
return map_proc_info
def get_proc_running_info(pid):
proc_info = {}
proc_info['pid'] = pid
proc = psutil.Process(pid)
proc_info['name'] = proc.name()
proc_info['path'] = proc.exe()
proc_info['work_dir'] = proc.cwd()
proc_info['run_time'] = datetime.datetime.fromtimestamp(proc.create_time()).strftime("%Y-%m-%d %H:%M:%S")
proc_info['cpu_time'] = proc.cpu_times()
proc_info['mem_usage'] = proc.memory_info()
proc_info['io_cnter'] = proc.io_counters()
proc_info['connections'] = proc.connections()
proc_info['thrd_cnt'] = proc.num_threads()
return proc_info
下面是程序的主函数,执行入口
# coding=utf-8
import process_info as pi
proc_name = "WeChatStore.exe"
map_pid_name = pi.get_pid_by_pname(proc_name)
if len(map_pid_name) == 0:
print("can not find process with name ", proc_name)
lst_proc_info = []
for key in map_pid_name:
lst_proc_info.append(pi.get_proc_running_info(key))
for p in lst_proc_info:
mem = p["mem_usage"]
print("rss = {0}KB vms = {1}KB".format(
mem.rss/1024, mem.vms/1024))
print("\n")