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'))
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。
相关推荐
-
Python subprocess模块学习总结
一.subprocess以及常用的封装函数运行python的时候,我们都是在创建并运行一个进程.像Linux进程那样,一个进程可以fork一个子进程,并让这个子进程exec另外一个程序.在Python中,我们通过标准库中的subprocess包来fork一个子进程,并运行一个外部的程序.subprocess包中定义有数个创建子进程的函数,这些函数分别以不同的方式创建子进程,所以我们可以根据需要来从中选取一个使用.另外subprocess还提供了一些管理标准流(standard stream)和管
-
python模块之subprocess模块级方法的使用
subprocess.run() 运行并等待args参数指定的指令完成,返回CompletedProcess实例. 参数:(*popenargs, input=None, capture_output=False, timeout=None, check=False, **kwargs).除input, capture_output, timeout, check,其他参数与Popen构造器参数一致. capture_output:如果设置为True,表示重定向stdout和stderr到管道,
-
Python subprocess模块详细解读
本文研究的主要是Python subprocess模块的相关内容,具体如下. 在学习这个模块前,我们先用Python的help()函数查看一下subprocess模块是干嘛的: DESCRIPTION This module allows you to spawn processes, connect to their input/output/error pipes, and obtain their return codes. 即允许你去创建一个新的进程让其执行另外的程序,并与它进行通信,获
-
Python的subprocess模块总结
subprocess意在替代其他几个老的模块或者函数,比如:os.system os.spawn* os.popen* popen2.* commands.* subprocess最简单的用法就是调用shell命令了,另外也可以调用程序,并且可以通过stdout,stdin和stderr进行交互. subprocess的主类 复制代码 代码如下: subprocess.Popen( args, bufsize=0, executable=None,
-
Python subprocess模块功能与常见用法实例详解
本文实例讲述了Python subprocess模块功能与常见用法.分享给大家供大家参考,具体如下: 一.简介 subprocess最早在2.4版本引入.用来生成子进程,并可以通过管道连接他们的输入/输出/错误,以及获得他们的返回值. subprocess用来替换多个旧模块和函数: os.system os.spawn* os.popen* popen2.* commands.* 运行python的时候,我们都是在创建并运行一个进程,linux中一个进程可以fork一个子进程,并让这个子进程ex
-
Python中subprocess模块用法实例详解
本文实例讲述了Python中subprocess模块用法.分享给大家供大家参考.具体如下: 执行命令: >>> subprocess.call(["ls", "-l"]) 0 >>> subprocess.call("exit 1", shell=True) 1 测试调用系统中cmd命令,显示命令执行的结果: x=subprocess.check_output(["echo", "
-
Python下的subprocess模块的入门指引
在熟悉了Qt的QProcess以后,再回头来看python的subprocess总算不觉得像以前那么恐怖了. 和QProcess一样,subprocess的目标是启动一个新的进程并与之进行通讯. subprocess.Popen 这个模块主要就提供一个类Popen: class subprocess.Popen( args, bufsize=0, executable=None, stdin=None, stdout=None, stderr=None, preexec_fn=None, clo
-
Python Subprocess模块原理及实例
前言 其实有一个模块也支持执行系统命令,那个模块就是sys.system,但他执行系统命令会直接通过主进程去执行命令,那假如,该命令的执行需要耗费一个小时,那么主进程会卡一个小时,而不会去干别的事,这样就会导致程序的运行效率低下. 如果由subprocess去执行系统命令的时候并不会让主进程去执行,而是主进程会开辟出一个子进程去执行,并不会影响到主进程的运行,主进程该干嘛就干嘛,那么又有个问题,大家都知道进程之间的内存空间是独立的,也就是说进程之间是不能相互访问的,那么在subprocess中,
-
通过实例解析python subprocess模块原理及用法
一.subprocess以及常用的封装函数 运行python的时候,我们都是在创建并运行一个进程.像Linux进程那样,一个进程可以fork一个子进程,并让这个子进程exec另外一个程序.在Python中,我们通过标准库中的subprocess包来fork一个子进程,并运行一个外部的程序. subprocess包中定义有数个创建子进程的函数,这些函数分别以不同的方式创建子进程,所以我们可以根据需要来从中选取一个使用.另外subprocess还提供了一些管理标准流(standard stream)
-
Python subprocess模块常见用法分析
本文实例讲述了Python subprocess模块常见用法.分享给大家供大家参考,具体如下: subprocess模块是python从2.4版本开始引入的模块.主要用来取代 一些旧的模块方法,如os.system.os.spawn*.os.popen*.commands.*等.subprocess通过子进程来执行外部指令,并通过input/output/error管道,获取子进程的执行的返回信息. 常用方法: subprocess.call():执行命令,并返回执行状态,其中shell参数为F
-
python re模块findall()函数实例解析
本文研究的是re模块findall()函数的相关内容,首先看看实例代码: >>> import re >>> s = "adfad asdfasdf asdfas asdfawef asd adsfas " >>> reObj1 = re.compile('((\w+)\s+\w+)') >>> reObj1.findall(s) [('adfad asdfasdf', 'adfad'), ('asdfas asd
-
Python Tkinter模块 GUI 可视化实例
我就废话不多说了,直接上代码: coding:utf-8 #自带的Tkinter模块 from Tkinter import * from ScrolledText import ScrolledText #gui框 root = Tk() root.title('视频多线程') #窗口坐标和大小 +代表调整坐标 x代表调整大小 root.geometry('500x500+200+100') #滚动条 text = ScrolledText(root,font=('微软雅黑',10)) #实现
-
Python assert关键字原理及实例解析
这篇文章主要介绍了Python assert关键字原理及实例解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 Python assert(断言)用于判断一个表达式,在表达式条件为 False 的时候触发异常. 断言可以在条件不满足程序运行的情况下直接返回错误,而不必等待程序运行后出现崩溃的情况. 语法格式: assert expression 等价于: if not expression: raise AssertionError asser
-
python ftplib模块使用代码实例
这篇文章主要介绍了python ftplib模块使用代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 Python中默认安装的ftplib模块定义了FTP类,可用来实现简单的ftp客户端,用于上传或下载文件. ftp登陆连接 from ftplib import FTP # 加载ftp模块 ftp = FTP() # 设置变量 ftp.set_debuglevel(2) # 打开调试级别2,显示详细信息 ftp.connect("10.1
-
Python openpyxl模块原理及用法解析
这篇文章主要介绍了Python openpyxl模块原理及用法解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 此模块不是Python内置的模块需要安装,安装方法如下 pip install openpyxl 注意: 此模块只支持offce 2010,即是电子表格后缀是*.xlsx 1.openpyxl模块常用函数 import openpyxl wb = openpyxl.load_workbook('example.xlsx') ####
随机推荐
- VBS基础教程
- Oracle中创建和管理表详解
- perl中my和our的区别分析
- php实现的xml操作类
- jQuery.Validate验证库的使用介绍
- JavaScript实现快速排序的方法
- JQ获取动态加载的图片大小的正确方法分享
- SQLServer 数据修复命令DBCC一览
- javascript中"/"运算符常见错误
- 恢复系统:Ghost系统配置大全
- WINPE3.0集成RAID阵列卡驱动的实现方法
- 指向类成员函数的指针其实并非指针
- Java异常基础知识解析
- Python反射的用法实例分析
- Spring Boot中使用LDAP来统一管理用户信息的示例
- python使用多线程编写tcp客户端程序
- laravel 自定义常量的两种方案
- C语言结构体数组同时赋值的另类用法
- Python实现根据日期获取当天凌晨时间戳的方法示例
- python 删除字符串中连续多个空格并保留一个的方法