用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 集合 并集、交集 Series list set 转换的实例
May 29 Python
Python 使用类写装饰器的小技巧
Sep 30 Python
使用python采集脚本之家电子书资源并自动下载到本地的实例脚本
Oct 23 Python
Django-Rest-Framework 权限管理源码浅析(小结)
Nov 12 Python
Python跳出多重循环的方法示例
Jul 03 Python
python爬虫 execjs安装配置及使用
Jul 30 Python
win10子系统python开发环境准备及kenlm和nltk的使用教程
Oct 14 Python
树莓派升级python的具体步骤
Jul 05 Python
Python如何实现大型数组运算(使用NumPy)
Jul 24 Python
Python如何测试stdout输出
Aug 10 Python
浅谈Python描述数据结构之KMP篇
Sep 06 Python
python使用openpyxl库读写Excel表格的方法(增删改查操作)
May 02 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
使用PHP的日期与时间函数技巧
2008/04/24 PHP
PHP常用代码大全(新手入门必备)
2010/06/29 PHP
非常好用的两个PHP函数 serialize()和unserialize()
2012/02/04 PHP
解析argc argv在php中的应用
2013/06/24 PHP
PHP实现抓取Google IP并自动修改hosts文件
2015/02/12 PHP
PHP日期函数date格式化UNIX时间的方法
2015/03/19 PHP
jQuery切换网页皮肤并保存到Cookie示例代码
2014/06/16 Javascript
jquery实现保存已选用户
2014/07/21 Javascript
javascript数据结构与算法之检索算法
2015/04/04 Javascript
用JavaScript实现对话框的教程
2015/06/04 Javascript
jquery移除了live()、die(),新版事件绑定on()、off()的方法
2016/10/26 Javascript
详解Weex基于Vue2.0开发模板搭建
2017/03/20 Javascript
vue-hook-form使用详解
2017/04/07 Javascript
JS匹配日期和时间的正则表达式示例
2017/05/12 Javascript
vue2.0实现前端星星评分功能组件实例代码
2018/02/12 Javascript
json前后端数据交互相关代码
2018/09/19 Javascript
vue组件开发props验证的实现
2019/02/12 Javascript
利用原生JS实现data方法示例代码
2019/05/28 Javascript
vue实现直播间点赞飘心效果的示例代码
2019/09/20 Javascript
layui文件上传控件带更改后数据传值的方法
2019/09/23 Javascript
JQuery常用选择器功能与用法实例分析
2019/12/23 jQuery
在Python程序员面试中被问的最多的10道题
2017/12/05 Python
pandas 两列时间相减换算为秒的方法
2018/04/20 Python
python检测空间储存剩余大小和指定文件夹内存占用的实例
2018/06/11 Python
python实现录音小程序
2020/10/26 Python
Python读取配置文件(config.ini)以及写入配置文件
2020/04/08 Python
python输出数学符号实例
2020/05/11 Python
python使用建议与技巧分享(一)
2020/08/17 Python
大学生实习期自我评价范文
2013/10/03 职场文书
岗位职责定义及内容
2013/11/08 职场文书
工厂仓管员岗位职责范本
2014/07/17 职场文书
竞选学习委员演讲稿
2014/09/01 职场文书
违反交通法规检讨书
2014/09/10 职场文书
普通党员个人剖析材料
2014/10/08 职场文书
2015年五一劳动节演讲稿
2015/03/18 职场文书
GoLang中生成UUID唯一标识的实现
2021/05/08 Golang