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实现从一组颜色中找出与给定颜色最接近颜色的方法
Mar 19 Python
Python中的getopt函数使用详解
Jul 28 Python
Python中Collections模块的Counter容器类使用教程
May 31 Python
Python数据结构之单链表详解
Sep 12 Python
Python3编码问题 Unicode utf-8 bytes互转方法
Oct 26 Python
Python Flask框架扩展操作示例
May 03 Python
简单了解python 邮件模块的使用方法
Jul 24 Python
python实现比对美团接口返回数据和本地mongo数据是否一致示例
Aug 09 Python
Python函数参数类型及排序原理总结
Dec 19 Python
python更新数据库中某个字段的数据(方法详解)
Nov 18 Python
python 对xml解析的示例
Feb 27 Python
Python通用验证码识别OCR库ddddocr的安装使用教程
Jul 07 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中文件上传的安全问题
2006/10/09 PHP
phpmyadmin安装时提示:Warning: require_once(./libraries/common.inc.php)错误解决办法
2011/08/18 PHP
PHP快速按行读取CSV大文件的封装类分享(也适用于其它超大文本文件)
2014/04/10 PHP
ThinkPHP实现多数据库连接的解决方法
2014/07/01 PHP
7个鲜为人知却非常实用的PHP函数
2015/07/01 PHP
PHP实现支持CURL字符串证书传输的方法
2019/03/23 PHP
PHP下载大文件失败并限制下载速度的实例代码
2019/05/10 PHP
jquery select选中的一个小问题
2009/10/11 Javascript
自己动手开发jQuery插件教程
2011/08/25 Javascript
JavaScript获取伪元素(Pseudo-Element)属性的方法技巧
2015/03/13 Javascript
JS获取鼠标坐标位置实例分析
2016/01/20 Javascript
js获取元素的外链样式的简单实现方法
2016/06/06 Javascript
微信小程序进行微信支付的步骤昂述
2016/12/01 Javascript
移动端基础事件总结与应用
2017/01/12 Javascript
js图片加载效果实例代码(延迟加载+瀑布流加载)
2017/05/12 Javascript
详解Nodejs之静态资源处理
2017/06/05 NodeJs
Node.js使用Express.Router的方法
2017/11/14 Javascript
Javascript三种字符串连接方式及性能比较
2019/05/28 Javascript
JS实现简单移动端鼠标拖拽
2020/07/23 Javascript
详解Python中find()方法的使用
2015/05/18 Python
Python字符串拼接六种方法介绍
2017/12/18 Python
Python3删除排序数组中重复项的方法分析
2019/01/31 Python
使用python实现滑动验证码功能
2019/08/05 Python
python shapely.geometry.polygon任意两个四边形的IOU计算实例
2020/04/12 Python
卡塔尔航空官方网站:Qatar Airways
2017/02/08 全球购物
新西兰领先的内衣店:Bendon Lingerie新西兰
2018/07/11 全球购物
免税水晶:Duty Free Crystal
2019/05/13 全球购物
沙特阿拉伯电子产品和家用电器购物网站:Black Box
2019/07/24 全球购物
中专生自我鉴定
2013/12/17 职场文书
妈妈的账单教学反思
2014/02/06 职场文书
教师师德承诺书
2014/03/26 职场文书
高二学生评语大全
2014/04/25 职场文书
给校长的建议书500字
2014/05/15 职场文书
群教班子对照检查材料
2014/08/26 职场文书
实习证明格式范文
2015/06/16 职场文书
Pytest中skip skipif跳过用例详解
2021/06/30 Python