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 字符串转列表 list 出现\ufeff的解决方法
Jun 22 Python
Python编程使用tkinter模块实现计算器软件完整代码示例
Nov 29 Python
Python基于lxml模块解析html获取页面内所有叶子节点xpath路径功能示例
May 16 Python
python感知机实现代码
Jan 18 Python
对Python实现累加函数的方法详解
Jan 23 Python
Python3实现计算两个数组的交集算法示例
Apr 03 Python
Python中遍历列表的方法总结
Jun 27 Python
pytorch-RNN进行回归曲线预测方式
Jan 14 Python
Django跨域资源共享问题(推荐)
Mar 09 Python
解决 jupyter notebook 回车换两行问题
Apr 15 Python
python实现简单遗传算法
Sep 18 Python
python 爬取哔哩哔哩up主信息和投稿视频
Jun 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中smarty模板条件判断用法实例
2015/06/11 PHP
功能强大的PHP POST提交数据类
2016/07/15 PHP
php简单生成一组与多组随机字符串的方法
2017/05/09 PHP
javascript demo 基本技巧
2009/12/18 Javascript
jquery1.4后 jqDrag 拖动 不可用
2010/02/06 Javascript
JS实现的省份级联实例代码
2013/06/24 Javascript
微信内置浏览器私有接口WeixinJSBridge介绍
2015/05/25 Javascript
JS验证IP,子网掩码,网关和MAC的方法
2015/07/02 Javascript
10个JavaScript中易犯小错误
2016/02/14 Javascript
Vue.js每天必学之过滤器与自定义过滤器
2016/09/07 Javascript
js中获取 table节点各tr及td的内容简单实例
2016/10/14 Javascript
前端分页功能的实现以及原理(jQuery)
2017/01/22 Javascript
详解vue渲染函数render的使用
2017/12/12 Javascript
jQuery中使用validate插件校验表单功能
2019/05/24 jQuery
JS拖动选择table里的单元格完整实例【基于jQuery】
2019/05/28 jQuery
[05:24]TI9采访——教练
2019/08/24 DOTA
跟老齐学Python之编写类之二方法
2014/10/11 Python
python模拟鼠标拖动操作的方法
2015/03/11 Python
python3实现逐字输出的方法
2019/01/23 Python
由Python编写的MySQL管理工具代码实例
2019/04/09 Python
python opencv 读取图片 返回图片某像素点的b,g,r值的实现方法
2019/07/03 Python
弄懂这56个Python使用技巧(轻松掌握Python高效开发)
2019/09/18 Python
python 解压、复制、删除 文件的实例代码
2020/02/26 Python
python实现斗地主分牌洗牌
2020/06/22 Python
浅谈tensorflow使用张量时的一些注意点tf.concat,tf.reshape,tf.stack
2020/06/23 Python
Rockport乐步美国官网:风靡美国的白宫鞋
2016/11/24 全球购物
美国波西米亚风格服装品牌:Show Me Your Mumu
2018/01/05 全球购物
联想法国官方网站:Lenovo法国
2018/10/18 全球购物
乡下人家教学反思
2014/02/01 职场文书
班级寄语大全
2014/04/10 职场文书
年检委托书
2014/08/30 职场文书
党政领导班子四风问题对照检查材料思想汇报
2014/10/02 职场文书
个人四风问题整改措施思想汇报
2014/10/04 职场文书
干部考核工作总结
2015/08/12 职场文书
详解JavaScript中的执行上下文及调用堆栈
2021/04/29 Javascript
springboot中的pom文件 project报错问题
2022/01/18 Java/Android