Python批量管理爬虫进程:记录PID与批量终止方案

月亮慢半拍
月亮慢半拍
发布时间:2026-10-12 | 3人浏览过
原创

本文介绍了一种在Python爬虫开发中批量管理后台进程的方法。通过nohup命令在后台运行脚本并将进程ID(PID)追加至文件,随后利用Python读取该文件并执行kill命令,实现一次性终止大量挂起的爬虫任务。文章同时指出了进程复用可能导致误杀的风险,提供了实用的批量进程控制思路。

在运行爬虫程序时,由于等待目标服务器返回数据的时间较长,而CPU占用率通常较低,因此经常通过代理同时运行数百个实例。然而,爬虫脚本通常包含死循环,或者直到分配给该进程的所有任务完成才会退出。如果需要在运行中途终止这些任务,手动逐个kill显然效率低下。那么,如何高效地结束这些进程呢?

我的解决方案是在启动爬虫进程时记录其PID,并在需要手动终止时,通过脚本执行kill命令来结束它们。

for i in {1..100}
do
  nohup python NetEase_comms_proxy.py > hehe.dat 2>&1 & echo $! >> run.pid
  sleep 10
done

上述代码实现了在后台运行脚本100次,并将生成的PID追加到run.pid文件中。其中,nohup是no hang up的缩写命令,用于防止进程因挂起而终止。do…done之间是被循环执行的语句。

接下来是用于终止这些进程的Python脚本。

import os

if __name__ == '__main__':
  fin = open('run.pid', 'r')
  pids = []
  for line in fin:
    pids.append(line.strip())
  for pid in pids:
    cmd = 'kill ' + pid
    os.system(cmd)

执行该脚本后,所有记录的PID对应的进程均被终止。

需要注意的是,如果在任务运行期间,某些进程因完成任务或出错而自行退出,其他新启动的程序可能会复用这些PID。此时,如果运行kill脚本,可能会误杀这些新进程,从而造成不必要的麻烦。

以上关于使用Python记录运行PID并在需要时终止它们的实例即为全部内容,希望能为大家提供参考,也希望大家多多支持本站。

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表