Python Subprocess模块原理及实例

 更新时间:2019年08月26日 14:59:10   作者:JasonMingHao  
这篇文章主要介绍了Python Subprocess模块原理及实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

前言

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

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

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'))

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

相关文章

  • Pytorch相关知识介绍与应用

    Pytorch相关知识介绍与应用

    最近又重拾了机器学习的相关技术,在本科毕设的阶段下学习使用了Tensorflow 2.x工具,当时也是不求甚解,直接拿来用了,但现在已经有充足的时间、精力和基础知识来重新学习一下
    2022-11-11
  • Requests什么的通通爬不了的Python超强反爬虫方案!

    Requests什么的通通爬不了的Python超强反爬虫方案!

    今天带大家学习Requests什么的通通爬不了的Python超强反爬虫方案,文中有非常详细的图文介绍及代码示例,对正在学习python的小伙伴们有很好的帮助,需要的朋友可以参考下
    2021-05-05
  • 详解Python网络框架Django和Scrapy安装指南

    详解Python网络框架Django和Scrapy安装指南

    这篇文章主要介绍了详解Python网络框架Django和Scrapy安装指南,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2019-04-04
  • 利用Vscode进行Python开发环境配置的步骤

    利用Vscode进行Python开发环境配置的步骤

    这篇文章主要给大家介绍了关于如何利用Vscode进行Python开发环境配置的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用Python具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2020-06-06
  • Django连接MQTT的示例代码

    Django连接MQTT的示例代码

    本文主要介绍了Django连接MQTT的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-05-05
  • 什么是Python中的顺序表

    什么是Python中的顺序表

    在本篇文章里小编给大家整理了一篇关于Python中顺序表详解的相关知识点以及实例内容,需要的朋友们可以参考下。
    2020-06-06
  • Python多维/嵌套字典数据无限遍历的实现

    Python多维/嵌套字典数据无限遍历的实现

    下面小编就为大家带来一篇Python多维/嵌套字典数据无限遍历的实现。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-11-11
  • 轻松掌握Python中的if和循环判断技巧

    轻松掌握Python中的if和循环判断技巧

    这篇文章主要介绍了轻松掌握Python中的if和循环判断技巧的相关资料,需要的朋友可以参考下
    2023-11-11
  • 详解Python中defaultdict的具体使用

    详解Python中defaultdict的具体使用

    defaultdict 是一个类似字典的容器,属于 collections 模块, 它是字典的子类, 因此它具有词典的所有功能,下面小编就来和大家详细聊聊defaultdict的具体使用吧
    2023-10-10
  • Python中的递归函数使用详解

    Python中的递归函数使用详解

    这篇文章主要介绍了Python中的递归函数使用详解,递归函数是指某个函数调用自己或者调用其他函数后再次调用自己,由于不能无限嵌套调用,所以某个递归函数一定存在至少两个分支,一个是退出嵌套,不再直接或者间接调用自己;另外一个则是继续嵌套,需要的朋友可以参考下
    2023-12-12

最新评论