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