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中Threading用法详解
Dec 27 Python
linecache模块加载和缓存文件内容详解
Jan 11 Python
详解python中asyncio模块
Mar 03 Python
Python基于xlrd模块操作Excel的方法示例
Jun 21 Python
python中csv文件的若干读写方法小结
Jul 04 Python
Python3.5 处理文本txt,删除不需要的行方法
Dec 10 Python
对python实现模板生成脚本的方法详解
Jan 30 Python
Python实现的列表排序、反转操作示例
Mar 13 Python
一步步教你用python的scrapy编写一个爬虫
Apr 17 Python
python3 反射的四种基本方法解析
Aug 26 Python
使用Python来做一个屏幕录制工具的操作代码
Jan 18 Python
python中的getter与setter你了解吗
Mar 24 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
PHPMailer 中文使用说明小结
2010/01/22 PHP
浅析PHP中的字符串编码转换(自动识别原编码)
2013/07/02 PHP
zf框架的session会话周期及次数限制使用示例
2014/03/13 PHP
PHP 常用时间函数资料整理
2016/10/22 PHP
PHP的PDO连接讲解
2019/01/24 PHP
PHP中mysqli_get_server_version()的实例用法
2020/02/03 PHP
Tinymce+jQuery.Validation使用产生的BUG
2010/03/29 Javascript
Js组件的一些写法
2010/09/10 Javascript
基于Jquery的淡入淡出的特效基础练习
2010/12/13 Javascript
基于jQuery的简单的列表导航菜单
2011/03/02 Javascript
jquery获取tr中控件值并操作tr实现思路
2013/03/27 Javascript
浅析JavaScript中的同名标识符优先级
2013/12/06 Javascript
网页右下角弹出窗体实现代码
2014/06/05 Javascript
javascript实现完美拖拽效果
2015/05/06 Javascript
如何去除富文本中的html标签及vue、react、微信小程序中的过滤器
2018/11/21 Javascript
webpack优化的深入理解
2018/12/10 Javascript
vue 封装面包屑组件教程
2020/11/16 Javascript
使用python获取CPU和内存信息的思路与实现(linux系统)
2014/01/03 Python
使用Python编写一个在Linux下实现截图分享的脚本的教程
2015/04/24 Python
python中while和for的区别总结
2019/06/28 Python
浅谈Python中os模块及shutil模块的常规操作
2020/04/03 Python
详解如何使用Pytest进行自动化测试
2021/01/14 Python
用python监控服务器的cpu,磁盘空间,内存,超过邮件报警
2021/01/29 Python
利用CSS3实现进度条的两种姿势详解
2017/03/21 HTML / CSS
CSS3中引入多种自定义字体font-face
2020/06/12 HTML / CSS
顶丰TOPPIK台湾官网:增发纤维假发,告别秃发困扰
2018/06/13 全球购物
Myprotein瑞士官方网站:运动营养和健身网上商店
2019/09/25 全球购物
农民致富事迹材料
2014/01/23 职场文书
《老王》教学反思
2014/02/23 职场文书
2014婚礼司仪主持词
2014/03/14 职场文书
单位未婚证明范本
2014/11/25 职场文书
鲁滨孙漂流记读书笔记
2015/06/30 职场文书
行政处罚告知书
2015/07/01 职场文书
酒店开业主持词
2015/07/02 职场文书
Python基础之hashlib模块详解
2021/05/06 Python
eclipse创建项目没有dynamic web的解决方法
2021/06/24 Java/Android