python kil 掉子进程
为什么80%的码农都做不了架构师?>>>
def _stop_unix(self, errors):"""UNIX implementation of process killing@param errors: error messages. stop() will record messages into this list.@type errors: [str]"""self.exit_code = self.popen.poll() if self.exit_code is not None:logger.debug("process[%s].stop(): process has already returned %s", self.name, self.exit_code)#print "process[%s].stop(): process has already returned %s"%(self.name, self.exit_code)self.popen = Noneself.stopped = Truereturnpid = self.popen.pidpgid = os.getpgid(pid)logger.info("process[%s]: killing os process with pid[%s] pgid[%s]", self.name, pid, pgid)try:# Start with SIGINT and escalate from there.logger.info("[%s] sending SIGINT to pgid [%s]", self.name, pgid)os.killpg(pgid, signal.SIGINT)logger.info("[%s] sent SIGINT to pgid [%s]", self.name, pgid)timeout_t = time.time() + _TIMEOUT_SIGINTretcode = self.popen.poll()while time.time() < timeout_t and retcode is None:time.sleep(0.1)retcode = self.popen.poll()# Escalate non-responsive processif retcode is None:printerrlog("[%s] escalating to SIGTERM"%self.name)timeout_t = time.time() + _TIMEOUT_SIGTERMos.killpg(pgid, signal.SIGTERM)logger.info("[%s] sent SIGTERM to pgid [%s]"%(self.name, pgid))retcode = self.popen.poll()while time.time() < timeout_t and retcode is None:time.sleep(0.2)logger.debug('poll for retcode')retcode = self.popen.poll()if retcode is None:printerrlog("[%s] escalating to SIGKILL"%self.name)errors.append("process[%s, pid %s]: required SIGKILL. May still be running."%(self.name, pid))try:os.killpg(pgid, signal.SIGKILL)logger.info("[%s] sent SIGKILL to pgid [%s]"%(self.name, pgid))# #2096: don't block on SIGKILL, because this results in more orphaned processes overall#self.popen.wait()#os.wait()logger.info("process[%s]: sent SIGKILL", self.name)except OSError as e:if e.args[0] == 3:printerrlog("no [%s] process with pid [%s]"%(self.name, pid))else:printerrlog("errors shutting down [%s], see log for details"%self.name)logger.error(traceback.format_exc())else:logger.info("process[%s]: SIGTERM killed with return value %s", self.name, retcode)else:logger.info("process[%s]: SIGINT killed with return value %s", self.name, retcode)finally:self.popen = None
参考:http://wiki.ros.org/roslaunch
转载于:https://my.oschina.net/itfanr/blog/2050677
python kil 掉子进程相关推荐
- python popen阻塞_对Python subprocess.Popen子进程管道阻塞详解
问题产生描述 使用子进程处理一个大的日志文件,并对文件进行分析查询,需要等待子进程执行的输出结果,进行下一步处理. 出问题的代码 # 启用子进程执行外部shell命令 def __subprocess ...
- Python实战之子进程
Python实战之子进程 最近做一个小工具需要用到Python的字进程,看了一下Python的API,subprocess模块可以就可以实现,并且还挺简单 要实现一个简单的自进程,只需要 [pytho ...
- python进程池(子进程)函数没有执行
文章目录 1. 问题描述 问题排查经过 关于此问题的两个可能原因 内容较长 1. 问题描述 某日,写了一段爬虫代码(如下,爬取糗百图片代码示例),发现一个异常的问题,就是执行代码时,代码会以极快的速度 ...
- Python的subprocess子进程和管道进行交互
在很久以前,我写了一个系列,Python和C和C++的交互,如下 http://blog.csdn.net/marising/archive/2008/08/28/2845339.aspx 目的是解决 ...
- python程序开子进程打包成exe文件运行炸内存原因剖析
from multiprocessing import Processdef task():print("hahaha")passif __name__ == '__main__' ...
- python主进程 子进程_pool主进程捕获子进程异常
问题背景: 主进程做任务调度,子进程做任务执行,子进程定时返回进度信息,主进程获取进度,进度为100时,子进程任务结束.子进程执行过程中如果有异常,主进程需要捕获 python多进程调度, 主进程如何 ...
- python实时获取子进程输出_Python 从subprocess运行的子进程中实时获取输出的例子...
有些时候,我们需要将某些程序放到子进程中去运行,以达到整合系统的目的.在Python中,一个非常好的选择就是使用subprocess模块,本模块为开辟子进程去执行子程序提供了统一的接口,更加便于学习和 ...
- python子进程修改父进程内变量_如何将父变量传递给python中的子进程?
这里的简单答案是:不要使用subprocess.Popen,使用 multiprocessing.Process.或者,更好的是,multiprocessing.Pool或 concurrent.fu ...
- python结束子进程_如何清除python中的子进程
我们使用python进程来管理长时间运行的python子进程.有时需要终止子进程.kill命令不会完全终止进程,只会使其失效. 运行以下脚本将演示此行为.import subprocess p = s ...
最新文章
- PHP中session和cookie的区别
- Kotlin问题解决
- android ------- TCP/IP
- ShardingSphere 系列
- cfile read 最大读取限制_pandas读取表格后的常用数据处理操作
- java结构体系_java io结构体系
- micropython stm32f407 以太网_[MicroPython]STM32F407开发板DIY声光控开关
- 掌控谈话~让对方说“你说得对
- mock()java,关于java:@ Mock,@ MockBean和Mockito.mock()之间的区别
- php字长是什么,计算机的字长是指什么
- 第 2 章 类加载子系统
- 【LeArm】动手实践机械臂(一)
- iPhone6分辨率
- grafana 中国地图 echarts
- Video Matting:AI视频抠图
- 电脑桌面便签小工具下载,好用的桌面便签软件推荐
- VS间接寻址级别不同
- Word及Autocad中中文字号与字体大小的关系
- 查看qq空间说说及评论,设置相关表结构
- 西门子S7-1200 移位指令SHL