用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之list和str比较
Sep 20 Python
Python的爬虫包Beautiful Soup中用正则表达式来搜索
Jan 20 Python
python http接口自动化脚本详解
Jan 02 Python
python爬取哈尔滨天气信息
Jul 14 Python
nohup后台启动Python脚本,log不刷新的解决方法
Jan 14 Python
对django views中 request, response的常用操作详解
Jul 17 Python
Python使用python-docx读写word文档
Aug 26 Python
python字符串,元组,列表,字典互转代码实例详解
Feb 14 Python
Xadmin+rules实现多选行权限方式(级联效果)
Apr 07 Python
python实现b站直播自动发送弹幕功能
Feb 20 Python
上手简单,功能强大的Python爬虫框架——feapder
Apr 27 Python
python关于集合的知识案例详解
May 30 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
JAVA/JSP学习系列之二
2006/10/09 PHP
用PHP+MySql编写聊天室
2006/10/09 PHP
PHP图片上传类带图片显示
2006/11/25 PHP
PHP 冒泡排序算法的实现代码
2010/08/08 PHP
php5.4传引用时报错问题分析
2016/01/22 PHP
PHP的Laravel框架结合MySQL与Redis数据库的使用部署
2016/03/21 PHP
解决php 处理 form 表单提交多个 name 属性值相同的 input 标签问题
2017/05/11 PHP
基于php流程控制语句和循环控制语句(讲解)
2017/10/23 PHP
原型方法的不同写法居然会影响调试的解决方法
2007/03/08 Javascript
用Jquery实现多级下拉框无刷新的联动
2010/12/22 Javascript
JS构建页面的DOM节点结构的实现代码
2011/12/09 Javascript
Extjs4中Form的使用之本地hiddenfield
2013/11/26 Javascript
使用js完成节点的增删改复制等的操作
2014/01/02 Javascript
jQuery Ajax中的事件详细介绍
2015/04/16 Javascript
JavaScript的RequireJS库入门指南
2015/07/01 Javascript
jQuery实现Tab菜单滚动切换的方法
2015/09/21 Javascript
JS模拟Dialog弹出浮动框效果代码
2015/10/16 Javascript
javascript事件处理模型实例说明
2016/05/31 Javascript
javascript prototype原型详解(比较基础)
2016/12/26 Javascript
boostrapTable的refresh和refreshOptions区别浅析
2017/01/22 Javascript
vue之数据交互实例代码
2017/06/20 Javascript
Vue结合SignalR实现前后端实时消息同步
2017/09/19 Javascript
Bootstrap模态对话框用法简单示例
2018/08/31 Javascript
javaScript 实现重复输出给定的字符串的常用方法小结
2020/02/20 Javascript
[49:21]2018DOTA2亚洲邀请赛3月30日 小组赛B组 Effect VS iG
2018/03/31 DOTA
python 系统调用的实例详解
2017/07/11 Python
python os.path.isfile()因参数问题判断错误的解决
2019/11/29 Python
浅谈Django QuerySet对象(模型.objects)的常用方法
2020/03/28 Python
EJB的激活机制
2013/10/25 面试题
共产党员公开承诺书范文
2014/03/28 职场文书
中秋晚会策划方案
2014/06/12 职场文书
反四风个人对照检查材料思想汇报
2014/09/25 职场文书
上课玩手机的检讨书
2014/10/01 职场文书
结婚幸福感言
2015/08/01 职场文书
centos8安装nginx1.9.1的详细过程
2021/08/02 Servers
SONY600GR,国产收音机厂商永远的痛
2022/04/05 无线电