文档章节

python 借用psutil调用和kill子进程及孙进程

元禛慎独
 元禛慎独
发布于 2016/07/13 15:15
字数 220
阅读 276
收藏 0

使用subprocess调用子进程时出现一种情况,父进程A 生成子进程B,而B在执行的过程中又生成孙进程C,但是当我在父进程A中kill B时,C却没有被kill掉,需要自己写一个kill方法,借用psutil模块,代码如下:

# -*- coding: utf-8 -*-

import subprocess, time,types,os,psutil,sys

############################
def kill_chrome(chrome):
        for p in psutil.process_iter():
                if p.name()==chrome:
                        for child in p.children():
                                os.kill(child.pid,-1)
                        os.kill(p.pid,-1)


def main(line):
    child_poll=None
    n=1
    while type(child_poll)==types.NoneType:
        child = subprocess.Popen(line)
        print n
        time.sleep(20)
        child_poll=child.poll()
        kill_chrome("chromedriver.exe")
        n+=1
        if n>=4:
                child_poll="0"

#############################
pyf=sys.argv[1]
out=sys.argv[2]
line="D:/anaconda2/python xxxxxxx.py %s %s" % (pyf,out)
print line
#main(line)

##########################################################################

psutil是一个获取系统信息、系统进程等内容的库,非常方便。

如使用它查看当前系统进程的名称和pid:

for p in psutil.process_iter():

    print p.name(), p.pid

© 著作权归作者所有

元禛慎独
粉丝 3
博文 209
码字总数 60366
作品 0
朝阳
程序员
私信 提问
python 模块psutil获取进程信息

获取进程信息 接续上篇《python 常用内建模块之psutil》安装psutil,并且获取一些基本信息,本篇介绍通过psutil获取到所有进程的详细信息: 1. 获取所有进程ID 运行结果: 2. 获取指定进程I...

展菲
08/16
0
0
python3 在不同操作系统安装第三方库方法

最近在看python3 ,有很多功能需要安装第三方库不同的操作系统安装方法经常出现错误,于是自己慢慢研究了不同操作系统的安装办法用psutil模块做个例子吧psutil是一个跨平台库,能够轻松实现获...

lisiyun22
2018/01/03
0
0
Python自动化运维一之psutil

1.1系统性能信息模块psutil 1.1.1下载安装psutil 1、 wget https://pypi.python.org/packages/source/p/psutil/psutil-2.0.0.tar.gz --no-check-certificate 2、 tar -xf psutil-2.0.0.tar.g......

hb131425
2018/06/26
0
0
Python调用exe程序的注意事项

实际应用场景:某应用使用Python实现了某算法,其中Python会调用一个。根据不同的输入数据,运行时间有长有短,短的10s内,长的10+分钟 问题: Python算法是由后台API(Java)调用的,有实时...

代码坊
2018/12/12
0
0
psutil--跨平台的进程管理

Python处理Windows进程 psutil(Python system and process utilities)是一个跨平台的进程管理和系统工具的python库, 可以处理系统CPU,memory,disks,network等信息。主要用于系统资源的监...

飞儿飞
2016/12/09
80
0

没有更多内容

加载失败,请刷新页面

加载更多

SDKMAN推荐一个好

是在大多数基于Unix的系统上管理多个软件开发工具包的并行版本的工具。它提供了一个方便的命令行界面(CLI)和API来安装,切换,删除和列出sdk相关信息。以下是一些特性: By Developers, fo...

hotsmile
29分钟前
8
0
什么是 HDFS

是什么? HDFS 是基于 Java 的分布式文件系统,允许您在 Hadoop 集群中的多个节点上存储大量数据。 起源: 单机容量往往无法存储大量数据,需要跨机器存储。统一管理分布在集群上的文件系统称...

Garphy
32分钟前
4
0
一起来学Java8(四)——复合Lambda

在一起来学Java8(二)——Lambda表达式中我们学习了Lambda表达式的基本用法,现在来了解下复合Lambda。 Lambda表达式的的书写离不开函数式接口,复合Lambda的意思是在使用Lambda表达式实现函...

猿敲月下码
57分钟前
10
0
debian10使用putty配置交换机console口

前言:Linux的推广普及,需要配合解决实际应用方能有成效! 最近强迫自己用linux进行实际工作,过程很痛苦,还好通过网络一一解决,感谢各位无私网友博客的帮助! 系统:debian10 桌面:xfc...

W_Lu
今天
12
0
aelf Enterprise 0.8.0 beta有奖公测,“Bug奖金计划”重磅开启

2019年9月30日,aelf Enterprise 0.8.0 beta版正式发布。aelf Enterprise 0.8.0 beta是一个完备的区块链系统, 包含完备的区块链系统、开发套件、开发文档、以及配套的基础应用和基础服务。 ...

AELF开发者社区
今天
10
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部