这篇文章主要为大家介绍了Python如何实现监控一个程序的运行情况,然后视情况将进程杀死并重启,文中的示例代码简洁易懂,需要的可以参考一下
目录
一、前言
在使用selenium库爬取一些小东西,经常出现程序进入死循环的情况。导致一个简简单单的需求,居然花了3天没跑完,很是气愤。遂给写了一个监听程序,当爬虫死机一定时间的时候,就把这只爬虫拍死,然后根据日志从上次爬的地方重启一只新爬虫。
二、使用psutil库和subprocess库介绍
当涉及到与操作系统进行交互的时候,Python中的 psutil 和 subprocess 库都是非常有用的工具。
1.psutil 库
psutil(process and system utilities)是一个跨平台的库,提供了许多有用的系统和进程信息。通过 psutil 库,我们可以轻松地获取操作系统的各种信息,如 CPU 使用情况、内存使用情况、磁盘使用情况等等。此外,psutil 还可以用于获取和操作进程信息,如获取进程的 CPU 使用情况、内存使用情况、打开的文件和网络连接等等。
以下是 psutil 库的一些主要功能:
- 获取 CPU 使用率、内存使用率、磁盘使用情况、网络信息等等。
- 获取系统启动时间、用户数、主机名等等系统信息。
- 获取进程的 PID、CPU 使用情况、内存使用情况、线程数等等信息。
- 操作进程,如发送信号、终止进程等等。
2.subprocess 库
subprocess 库是用于在 Python 程序中执行外部命令的标准库。通过 subprocess 库,我们可以启动一个子进程来执行外部命令,然后在 Python 程序中捕获并处理该命令的输出。subprocess 库提供了多个函数,如 Popen、call、check_call 等等,以便于我们执行外部命令和处理命令的输出。
以下是 subprocess 库的一些主要功能:
- 启动子进程并执行外部命令。
- 在子进程中捕获并处理命令的输出。
- 设置子进程的环境变量、工作目录等等属性。
- 通过管道连接多个子进程,从而实现数据流的处理。
总之,psutil 和 subproc