python里使用multiprocessing.Pool创建的子进程放到后台执行后怎样批量结束

2023-12-25 15:37:32

近来开发的一个黄页爬虫, 因为要请求多个接口获取数据, 为了提高爬取效率, 所以使用了进程池去请求接口, 用的是multiprocessing.Pool创建进程池的方式.

当我把爬虫放到服务器上运行时, 我使用了

nohup python lei.py & 

disown 

命令让这个进程在后台运行,但发现有个问题:当我想结束它们时,我通过

ps aux|grep lei

找到了很多进程,例如我启动的进程池数量是30时,就会有30个进程id在搜索结果列表中,我执行 kill [父进程id]后, 有些子进程会被杀死, 但经常是杀不干净, 因为这些子进程也是独立于父进程的, 并不是说父进程结束了, 子进程就会跟着被杀死;

查了一番资料后, 发现用如下的方式可行, 很简单, 就两步:

  1. 查找到父进程的id, 命令如下:
ps aux|grep lei.py

结果行里带S1标记的第二列就是父进程id
示例图片如上图中, 278992 即是父进程

  1. 使用命令一起杀死子进程
kill -TERM -<父进程PID>

在这个例子中, 执行的命令是

kill -TERM -278992

然后父进程和子进程都被杀死了

文章来源:https://blog.csdn.net/one_and_only4711/article/details/135195354
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。