Python Subprocess模块原理及实例


Posted in Python onAugust 26, 2019

前言

其实有一个模块也支持执行系统命令,那个模块就是sys.system,但他执行系统命令会直接通过主进程去执行命令,那假如,该命令的执行需要耗费一个小时,那么主进程会卡一个小时,而不会去干别的事,这样就会导致程序的运行效率低下。

如果由subprocess去执行系统命令的时候并不会让主进程去执行,而是主进程会开辟出一个子进程去执行,并不会影响到主进程的运行,主进程该干嘛就干嘛,那么又有个问题,大家都知道进程之间的内存空间是独立的,也就是说进程之间是不能相互访问的,那么在subprocess中,有个管道的概念,既然固定死了进程之间不能相互访问,那么可以将执行命令的结果输出到管道里,该管道其实就是一块共享的内存空间,可以让主进程去获取到该共享内存空间存放的数据

subprocess基本工作原理

Python Subprocess模块原理及实例

subprocess简单案例

import subprocess 
# 创建一个子进程去执行系统命令
obj=subprocess.Popen(
  'ps -ef',    # 执行的系统命令(必须是字符串格式)
  shell=True,   # 指定命令解释器来解释执行的这条命令
  stdout=subprocess.PIPE, # 将执行的正确结果丢到管道(共享内存空间,用于进程之间共享)
  stderr=subprocess.PIPE # 将执行的错误结果丢到另一个新的管道
)

'''
当从任意一个管道,例如正确或者错误结果管道中获取值,
'''

# 从正确管道中获取值
res=obj.stdout.read() # 主进程去管道里获取正确的结果
print(res.decode('utf-8')) # 获取的结果是bytes类型,需要指定decode指定编码

# 从错误管道中获取值
res2=obj.stderr.read()
print(res2.decode('utf-8'))

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python cx_freeze打包工具处理问题思路及解决办法
Feb 13 Python
在Ubuntu系统下安装使用Python的GUI工具wxPython
Feb 18 Python
Python实现优先级队列结构的方法详解
Jun 02 Python
python使用logging模块发送邮件代码示例
Jan 18 Python
根据DataFrame某一列的值来选择具体的某一行方法
Jul 03 Python
对numpy中的transpose和swapaxes函数详解
Aug 02 Python
python实现顺序表的简单代码
Sep 28 Python
利用Pyhton中的requests包进行网页访问测试的方法
Dec 26 Python
python使用knn实现特征向量分类
Dec 26 Python
django在开发中取消外键约束的实现
May 20 Python
使用tensorflow进行音乐类型的分类
Aug 14 Python
给numpy.array增加维度的超简单方法
Jun 02 Python
python自动循环定时开关机(非重启)测试
Aug 26 #Python
Python 字符串类型列表转换成真正列表类型过程解析
Aug 26 #Python
Python类中的魔法方法之 __slots__原理解析
Aug 26 #Python
pywinauto自动化操作记事本
Aug 26 #Python
Python 实现的 Google 批量翻译功能
Aug 26 #Python
python自动化工具之pywinauto实例详解
Aug 26 #Python
Python3简单爬虫抓取网页图片代码实例
Aug 26 #Python
You might like
PHP简洁函数(PHP简单明了函数语法)
2012/06/10 PHP
PHP中exec函数和shell_exec函数的区别
2014/08/20 PHP
PHP执行SQL文件并将SQL文件导入到数据库
2015/09/17 PHP
Laravel 解决419错误 -ajax请求错误的问题(CSRF验证)
2019/10/25 PHP
setTimeout与setInterval在不同浏览器下的差异
2010/01/24 Javascript
jQuery 中使用JSON的实现代码
2011/12/01 Javascript
jQuery中 prop() attr()使用详解
2015/05/19 Javascript
JS模拟实现Select效果代码
2015/09/24 Javascript
JavaScript事件类型中UI事件详解
2016/01/14 Javascript
JS模拟bootstrap下拉菜单效果实例
2016/06/17 Javascript
BOM系列第一篇之定时器setTimeout和setInterval
2016/08/17 Javascript
jQuery实现页面点击后退弹出提示框的方法
2016/08/24 Javascript
JS仿QQ好友列表展开、收缩功能(第一篇)
2017/07/07 Javascript
VUE2.0+ElementUI2.0表格el-table实现表头扩展el-tooltip
2018/11/30 Javascript
Vue脚手架编写试卷页面功能
2020/03/17 Javascript
vue3.0实现点击切换验证码(组件)及校验
2020/11/18 Vue.js
使用typescript快速开发一个cli的实现示例
2020/12/09 Javascript
[42:56]VGJ.S vs Serenity 2018国际邀请赛小组赛BO2 第二场 8.19
2018/08/21 DOTA
python 文件与目录操作
2008/12/24 Python
使用Django Form解决表单数据无法动态刷新的两种方法
2017/07/14 Python
python使用xpath中遇到:到底是什么?
2018/01/04 Python
TensorFlow实现Softmax回归模型
2018/03/09 Python
Python实现爬虫爬取NBA数据功能示例
2018/05/28 Python
pygame实现俄罗斯方块游戏
2018/06/26 Python
解决python中无法自动补全代码的问题
2018/12/04 Python
Python字符串的修改方法实例
2019/12/19 Python
Python如何用filter函数筛选数据
2020/03/05 Python
python3 deque 双向队列创建与使用方法分析
2020/03/24 Python
python画环形图的方法
2020/03/25 Python
Django全局启用登陆验证login_required的方法
2020/06/02 Python
python实现双人五子棋(终端版)
2020/12/30 Python
英国最大的女性服装零售商:Dorothy Perkins
2017/03/30 全球购物
美国名牌太阳镜折扣网站:Eyedictive
2017/05/15 全球购物
路政管理毕业自荐书范文
2014/02/10 职场文书
高中生操行评语
2014/04/25 职场文书
事业单位工作人员岗前培训心得体会
2016/01/08 职场文书