python不同平台进程的启动与终止
Liunx进程的启动与终止
在使用subprocess创建进程时需要将所有进程设置为一个进程组
preexec_fn:只在 Unix 平台下有效,用于指定一个可执行对象(callable object),它将在子进程运行之前被调用
close_fds:在执行子进程之前,将关闭除0、1和2以外的所有文件描述符;表示子进程将不会继承父进程的输入、输出、错误管道
import subprocess, os, signal, time
process_pid = None
# linux
def start_process():
command = "adb shell"
p = subprocess.Popen(command, shell=True, stdout=subprocess.PIPE, \
preexec_fn=os.setpgrp, close_fds=True)
print("adb shell")
global process_pid
process_pid = p.pid
print(process_pid)
start_process()
time.sleep(5)
os.killpg(process_pid, signal.SIGKILL)
Windows进程的启动与终止
由于preexec_fn不适用于Windows系统,因此采取另外方式
方式一:
使用psutils遍历进程ID的子进程依次杀,此方法也适用于Linux系统
# 进程开启
import subprocess, psutil, time
command = "adb shell"
process = subprocess.Popen(command, shell=True, \
stdout=subprocess.PIPE, stderr=subprocess.PIPE)
process_id = process.pid
print(process_id)
print("adb shell")
# 进程终止
def kill(proc_pid):
parent_proc = psutil.Process(proc_pid)
# recursive=True:获取所有的父子进程
for child_proc in parent_proc.children(recursive=True):
child_proc.kill()
parent_proc.kill()
time.sleep(5)
kill(process_id)
方式二:
直接使用Windows的taskkill -t:进程树,-f:强制杀死
taskkill /pid process_id -t -f
python不同平台进程的启动与终止的更多相关文章
- python之supervisor进程管理工具
supervisor是python写的一个管理进程运行的工具,可以很方便的监听.启动.停止.重启一个或多个进程:有了supervisor后,就不用字节写启动和监听的shell脚本了,非常方便. sup ...
- python中的进程、线程(threading、multiprocessing、Queue、subprocess)
Python中的进程与线程 学习知识,我们不但要知其然,还是知其所以然.你做到了你就比别人NB. 我们先了解一下什么是进程和线程. 进程与线程的历史 我们都知道计算机是由硬件和软件组成的.硬件中的CP ...
- Python线程,进程,携程,I/O同步,异步
只有本人能看懂的-Python线程,进程,携程,I/O同步,异步 举个栗子: 我想get三个url,先用普通的for循环 import requests from multiprocessing im ...
- python之路----进程二
守护进程 会随着主进程的结束而结束. 主进程创建守护进程 其一:守护进程会在主进程代码执行结束后就终止 其二:守护进程内无法再开启子进程,否则抛出异常:AssertionError: daemonic ...
- python之路----进程(一)
一.理论知识1.操作系统发展简介 1.没有操作系统 —— 穿孔卡片 2.批处理系统 —— 串行 ,速度块 联机批处理 读磁带的时候速度快 脱机批处理 读磁带和cpu工作并发 3.多道程序系统 —— 并 ...
- Python(线程进程3)
四 协程 协程,又称微线程,纤程.英文名Coroutine.一句话说明什么是线程:协程是一种用户态的轻量级线程. 协程拥有自己的寄存器上下文和栈.协程调度切换时,将寄存器上下文和栈保存到其他地方,在切 ...
- Python 多线程、进程、协程上手体验
浅谈 Python 多线程.进程.协程上手体验 前言:浅谈 Python 很多人都认为 Python 的多线程是垃圾(GIL 说这锅甩不掉啊~):本章节主要给你体验下 Python 的两个库 Thre ...
- Python 中的进程与 锁
理论知识 操作系统背景知识 顾名思义,进程即正在执行的一个过程.进程是对正在运行程序的一个抽象. 进程的概念起源于操作系统,是操作系统最核心的概念,也是操作系统提供的最古老也是最重要的抽象概念之一.操 ...
- python之路-进程
博客园 首页 新随笔 联系 管理 订阅 随笔- 31 文章- 72 评论- 115 python之路——进程 阅读目录 理论知识 操作系统背景知识 什么是进程 进程调度 进程的并发与并行 ...
随机推荐
- css修改文子背景浮动
伪元素选择器 """通过css操作文本内容""" 1.修改首个字体样式 p:first-letter{ color: blue; font- ...
- tomcat 1.2 负载均衡
实验效果:访问同一个ip或域名,轮询显示两个不同的tomcat界面, nginx服务器ip:192.168.213.4 tomcat服务器ip:192.168.213.3 实验环境:两台服 ...
- docker-compose 启动 rabbitmq
说明 前提条件 ubuntu-20.04-server docker & docker-compose 安装参考 安装 准备 rabbitmq.conf 新建 rabbitmq.conf 文件 ...
- cpulimit-限制CPU速率
CPULimit是一个简单的程序,它可以限制指定进程的CPU百分比. 1.安装依赖 root@localhost:~# apt-get -y install git 2.从GitHUB中克隆源码到本地 ...
- B - A Simple Task
https://vjudge.net/contest/446582#problem/B 这道题是一道不错的线段树练代码能力的题. #include<bits/stdc++.h> using ...
- Aged-cat 的 WebServer 配置详细流程
前言 最近看到一个不错的webserver项目,但是配置过程给的不详细,这里给出详细配置过程 项目地址:https://github.com/Aged-cat/WebServer (感谢老猫大神的项目 ...
- datax在解析完配置后,会将core.json,job.json,plugin.json合并内容
{ "common": { "column": { "dateFormat": "yyyy-MM-dd", " ...
- .NET C#基础(4):属性 - 本质是方法
0. 文章目的 本文面向有一定.NET C#基础知识的学习者,介绍C#中属性的属性.定义.使用方法以及特殊性. 1. 阅读基础 理解C#基本语法(定义类及类成员,调用方法) 认可OOP的封 ...
- 入坑KeePass(二)重置keepass设置
保留好.kdbx和密钥文件,软件的文件可以删除掉,重新下载并解压设置就恢复默认了
- 【Java面试】Mysql为什么使用B+Tree作为索引结构
一个工作8年的粉丝私信了我一个问题. 他说这个问题是去阿里面试的时候被问到的,自己查了很多资料也没搞明白,希望我帮他解答. 问题是: "Mysql为什么使用B+Tree作为索引结构" ...