在使用Python进行项目开发时,经常会遇到需要监控进程的需求。Python提供了一些模块可以帮助我们实现进程的监控,比如psutil
模块和subprocess
模块。
使用psutil模块监控进程
import psutil
# 获取所有进程列表
pids = psutil.pids()
# 遍历进程列表
for pid in pids:
try:
p = psutil.Process(pid)
# 进程名称
name = p.name()
# 进程状态
status = p.status()
# 进程占用CPU的时间比例
cpu_percent = p.cpu_percent(interval=1)
# 进程内存占用量
memory_info = p.memory_info().rss
print(pid, name, status, cpu_percent, memory_info)
except:
pass
上述代码中psutil.pids()
函数返回所有进程的PID列表,然后遍历PID列表获取每个进程的信息。通过psutil.Process(pid)
函数可以得到一个Process
对象,然后调用name()
、status()
等方法获得进程的名称、状态、CPU占用率和内存占用量。
需要注意的是,在Linux和Windows系统中获取进程信息的方法不同,使用psutil
模块可以避免这个问题。此外,psutil
模块还支持查看系统资源占用情况、网络连接等功能。
使用subprocess模块监控进程
import subprocess
# 执行命令
proc = subprocess.Popen("ping baidu.com -n 10", stdout=subprocess.PIPE)
# 读取输出结果
while True:
line = proc.stdout.readline()
if not line:
break
print(line.strip().decode("gbk"))
上述代码中subprocess.Popen()
函数执行命令并返回一个Popen
对象,然后可以通过stdout
属性获取命令的输出结果。通过stdout.readline()
方法可以逐行读取输出结果。
需要注意的是,subprocess
模块执行命令时需要注意参数的转义和编码问题,否则可能会导致程序无法执行。
上一篇 html无限级分类源代码
下一篇 jquery 信封打开效果