用python记录运行pid,并在需要时kill掉它们的实例


Posted in Python onJanuary 16, 2017

我在跑爬虫程序的时候,由于爬虫程序的等待目标服务器返回数据的时间很长,而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 append到run.pid文件中。其中nohup 是 no hang up的缩写命令。do…done之间是被循环的语句。

接下来就是kill掉它们的语句了,我用的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全部kill掉了。

但需要注意的一点时,如果在任务运行期间,有的进程由于完成任务或者出错而退出。其他的程序可能会share这些进程的Pid,这样如果在运行kill脚本的时候,可能附带就把这些进程也给Kill掉了,造成不必要的麻烦。

以上这篇用python记录运行pid,并在需要时kill掉它们的实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
分析Python编程时利用wxPython来支持多线程的方法
Apr 07 Python
python从入门到精通(DAY 1)
Dec 20 Python
python 递归遍历文件夹,并打印满足条件的文件路径实例
Aug 30 Python
基于Python中capitalize()与title()的区别详解
Dec 09 Python
Python批量发送post请求的实现代码
May 05 Python
Python字符串中删除特定字符的方法
Jan 15 Python
基于python 等频分箱qcut问题的解决
Mar 03 Python
python 实现 hive中类似 lateral view explode的功能示例
May 18 Python
Python中Selenium库使用教程详解
Jul 23 Python
基于python实现MQTT发布订阅过程原理解析
Jul 27 Python
Python定时任务框架APScheduler原理及常用代码
Oct 05 Python
PyCharm 配置SSH和SFTP连接远程服务器
May 11 Python
python 根据pid杀死相应进程的方法
Jan 16 #Python
总结python实现父类调用两种方法的不同
Jan 15 #Python
利用python程序帮大家清理windows垃圾
Jan 15 #Python
Python科学计算之NumPy入门教程
Jan 15 #Python
Python科学计算之Pandas详解
Jan 15 #Python
使用pyecharts无法import Bar的解决方案
Apr 23 #Python
详解Python3中字符串中的数字提取方法
Jan 14 #Python
You might like
phpize的深入理解
2013/06/03 PHP
PHP递归实现层级树状展开
2016/04/01 PHP
分析PHP中单双引号的误区和双引号小隐患
2016/07/19 PHP
PHP批量删除jQuery操作
2017/07/23 PHP
jQuery列表拖动排列具体实现
2013/11/04 Javascript
B/S模式项目中常用的javascript汇总
2013/12/17 Javascript
jQuery.holdReady()使用方法
2014/05/20 Javascript
jQuery插件开发详细教程
2014/06/06 Javascript
元素绑定click点击事件方法
2015/06/08 Javascript
javascript如何定义对象数组
2016/06/07 Javascript
BootStrap 超链接变按钮的实现方法
2016/09/25 Javascript
利用HBuilder打包前端开发webapp为apk的方法
2017/11/13 Javascript
使用Vue完成一个简单的todolist的方法
2017/12/01 Javascript
解决js ajax同步请求造成浏览器假死的问题
2018/01/18 Javascript
记一次vue去除#问题处理经过小结
2019/01/24 Javascript
微信小程序基于movable-view实现滑动删除效果
2020/01/08 Javascript
[01:22:28]DOTA2-DPC中国联赛 正赛 SAG vs RNG BO3 第一场 1月18日
2021/03/11 DOTA
跟老齐学Python之使用Python操作数据库(1)
2014/11/25 Python
python过滤字符串中不属于指定集合中字符的类实例
2015/06/30 Python
Python实现中文数字转换为阿拉伯数字的方法示例
2017/05/26 Python
Python 3.8正式发布重要新功能一览
2019/10/17 Python
python使用HTMLTestRunner导出饼图分析报告的方法
2019/12/30 Python
Python底层封装实现方法详解
2020/01/22 Python
解决TensorFlow训练内存不断增长,进程被杀死问题
2020/02/05 Python
如何把外网python虚拟环境迁移到内网
2020/05/18 Python
详解如何获取localStorage最大存储大小的方法
2020/05/21 HTML / CSS
美津浓美国官网:Mizuno美国
2018/08/07 全球购物
在线吉他课程,学习如何弹吉他:Fender Play
2019/02/28 全球购物
高中数学教师求职信
2013/10/30 职场文书
房产买卖委托公证书
2014/04/04 职场文书
行政部经理助理岗位职责
2014/06/15 职场文书
横幅标语大全
2014/06/17 职场文书
群众路线四风对照检查材料
2014/11/04 职场文书
HTML页面滚动时部分内容位置固定不滚动的实现
2021/04/14 HTML / CSS
MySQL 8.0 之不可见列的基本操作
2021/05/20 MySQL
用Python生成会跳舞的美女
2022/01/18 Python