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获取指定路径下所有指定后缀文件的方法
May 26 Python
Python基于PycURL实现POST的方法
Jul 25 Python
详解Python编程中包的概念与管理
Oct 16 Python
深入探究Django中的Session与Cookie
Jul 30 Python
浅谈flask中的before_request与after_request
Jan 20 Python
对Django项目中的ORM映射与模糊查询的使用详解
Jul 18 Python
tf.concat中axis的含义与使用详解
Feb 07 Python
python GUI库图形界面开发之PyQt5 UI主线程与耗时线程分离详细方法实例
Feb 26 Python
Python DataFrame使用drop_duplicates()函数去重(保留重复值,取重复值)
Jul 20 Python
Numpy中的数组搜索中np.where方法详细介绍
Jan 08 Python
jupyter notebook指定启动目录的方法
Mar 02 Python
用Python爬取各大高校并可视化帮弟弟选大学,弟弟直呼牛X
Jun 11 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实现的随机广告显示代码
2007/06/14 PHP
php cookies中删除的一般赋值方法
2011/05/07 PHP
php实现简易聊天室应用代码
2015/09/23 PHP
JQuery打造PHP的AJAX表单提交实例
2009/11/03 Javascript
Javascript的setTimeout()使用闭包特性时需要注意的问题
2014/09/23 Javascript
jquery插件推荐 jquery.cookie
2014/11/09 Javascript
jQuery类选择器用法实例
2014/12/23 Javascript
javascript html5实现表单验证
2016/03/01 Javascript
JS实现控制文本框的内容
2016/07/10 Javascript
JS判断日期格式是否合法的简单实例
2016/07/11 Javascript
VC调用javascript的几种方法(推荐)
2016/08/09 Javascript
JS实现的Unicode编码转换操作示例
2017/04/28 Javascript
JS基于正则实现数字千分位用逗号分隔的方法
2017/06/16 Javascript
JS如何设置元素样式的方法示例
2017/08/28 Javascript
Angular 5.0 来了! 有这些大变化
2017/11/15 Javascript
PHP自动加载autoload和命名空间的应用小结
2017/12/01 Javascript
select2 ajax 设置默认值,初始值的方法
2018/08/09 Javascript
Vue开发之封装分页组件与使用示例
2019/04/25 Javascript
JQuery实现简单的复选框树形结构图示例【附源码下载】
2019/07/16 jQuery
pageGroup.js实现分页功能
2019/07/27 Javascript
Python的shutil模块中文件的复制操作函数详解
2016/07/05 Python
Python数据分析之双色球统计两个红和蓝球哪组合比例高的方法
2018/02/03 Python
python实现简单登陆流程的方法
2018/04/22 Python
Python中new方法的详解
2019/01/15 Python
Python爬虫beautifulsoup4常用的解析方法总结
2019/02/25 Python
Django中间件拦截未登录url实例详解
2019/09/03 Python
HTML5图片预览实例分享
2014/06/04 HTML / CSS
美国著名的女性内衣零售商:Frederick’s of Hollywood
2018/02/24 全球购物
Feelunique美国:欧洲大型的在线美妆零售电商
2018/11/04 全球购物
Jacques Lemans德国:奥地利钟表品牌
2019/12/26 全球购物
大学生新闻专业个人自我评价
2013/11/12 职场文书
面试后感谢信
2014/02/01 职场文书
商学院大学生求职的自我评价
2014/03/12 职场文书
城市规划应届生推荐信
2014/09/08 职场文书
IDEA2021.2配置docker如何将springboot项目打成镜像一键发布部署
2021/09/25 Java/Android
Python+OpenCV实现在图像上绘制矩形
2022/03/21 Python