Python 进程管理:从 ps 命令到 psutil 库
在开发和运维过程中,查看和管理正在运行的 Python 进程是一项核心技能。“ps python” 指的是通过系统命令或编程方式来查找、监控或终止 Python 进程。
使用 Linux/macOS 系统命令查找 Python 进程
在终端中,最常用的方法是结合 ps 命令和 grep 过滤工具。
-
基础查找命令:
ps aux | grep python- ps aux:列出系统中所有正在运行的进程。
- 管道符,将前一个命令的结果传递给下一个命令。
- grep python:在结果中搜索包含 “python” 关键字的行。
-
查看详细参数:
如果你想看到 Python 脚本的具体路径和启动参数,可以使用:ps -ef | grep python -
更高效的工具:pgrep:
如果你只需要获取 Python 进程的 PID(进程 ID),可以使用pgrep:pgrep -af python- -a:显示完整的命令行参数。
- -f:匹配整个命令行,而不仅仅是进程名。
常用进程信息解读
当你执行 ps aux 时,输出的每一列都有特定含义,这对于性能调优至关重要:
- USER:运行该进程的用户。
- PID:进程的唯一标识符,用于
kill命令。 - %CPU:进程占用的 CPU 使用率。
- %MEM:进程占用的物理内存百分比。
- COMMAND:启动进程的完整命令。
在 Python 代码中实现“ps”功能
如果你希望在 Python 程序内部监控其他进程或自身的资源占用,使用第三方库 psutil 是最专业的做法。
-
安装 psutil:
pip install psutil -
使用示例:
import psutil
# 1. 查找所有包含 "python" 关键字的进程
for proc in psutil.process_iter(['pid', 'name', 'cmdline']):
try:
# 检查进程名或命令行参数中是否包含 python
if 'python' in proc.info['name'].lower() or \
(proc.info['cmdline'] and any('python' in arg.lower() for arg in proc.info['cmdline'])):
print(f"找到进程: PID={proc.info['pid']}, 命令={proc.info['cmdline']}")
except (psutil.NoSuchProcess, psutil.AccessDenied, psutil.ZombieProcess):
pass
# 2. 获取当前进程的 CPU 和内存占用
current_process = psutil.Process()
print(f"当前进程 CPU 使用率: {current_process.cpu_percent()}%")
print(f"当前进程内存占用: {current_process.memory_info().rss / 1024 / 1024:.2f} MB")
总结与建议
- 快速查看:直接使用
ps aux | grep python。 - 精准定位:使用
pgrep -af python。 - 自动化/监控:在 Python 脚本中使用 psutil 库。
- 异常处理:如果发现某个 Python 进程占用过高,可以使用
kill -9 <PID>来强制终止它。
首发原创文章,作者:世雄 - 原生数据库架构专家,如若转载,请注明出处:https://idctop.com/article/493889.html
