Python Subprocess模块原理及实例
作者:JasonMingHao 发布时间:2022-09-29 04:37:20
标签: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'))
来源:https://blog.51cto.com/12643266/2409721
0
投稿
猜你喜欢
- 听歌识曲,顾名思义,用设备“听”歌曲,然后它要告诉你这是首什么歌。而且十之八九它还得把这首歌给你播放出来。这样的功能在QQ音乐等应用上早就出
- 数据库系统是管理信息系统的核心,基于数据库的联机事务处理(OLTP)以及联机分析处理(OLAP)是银行、企业、政府等部门最为重要的计算机应用
- 如下所示:import osimport shutil#path of imgrpath = 'D:\\BaiduNetdiskDo
- 今天给大家分享腾讯云的实名认证接口的调用点击免费获取产品from __future__ import print_functionimpor
- 思路整理:1、进入心灵鸡汤网页,使用python获取心灵鸡汤内容2、登陆微信,找到需要发送的朋友3、发送获取的内容1、获取心灵鸡汤的内容如下
- 为什么要做接口自动化框架1、业务与配置的分离2、数据与程序的分离;数据的变更不影响程序3、有日志功能,实现无人值守4、自动发送测试报告5、不
- OL是有序列表,但给list-style-type:decimal 定义,在IE中却显示的全是1,在火狐、Opera、谷歌、Safari等中
- 本文实例为大家分享了python实现文字版扫雷的具体代码,供大家参考,具体内容如下python版本:2.7游戏运行图:代码已经注释得很清楚,
- 上次帮朋友写过的一个简单切换效果,超级简单,但也比较适用.因为用到了CSS Sprite技术,DEMO中附带了IE6兼容png的JS.核心J
- 1、filter_uniquefrom collections import Counterdef filter_unique(lst):
- Python语言功能非常强大,除了类之外,还有模块和包的概念,这有点像perl,此处简单说说包和模块。一、Python中的模块模块——其实就
- FP代表频繁模式(Frequent Pattern),算法主要分为两个步骤:FP-tree构建、挖掘频繁项集。FP树表示法FP树通过逐个读入
- 图像文件是自己仿照mnist格式制作,每张图像大小为128*128import structimport matplotlib.pyplot
- python中,遍历dict的方法有四种。但这四种遍历的性能如何呢?我做了如下的测试l = [(x,x) for x in xrange(1
- 在Web上使用菜单可以极大地节约页面的空间,同时也比较的符合用户从Windows上继承下来的UI操作体验。在以往的Web页菜单设计中,我们普
- 前言:情人节、三八女神节、520、七夕节、圣诞节、元旦、生日、新年、各种纪念日……这些节日,对于
- 相关代码如下: 1. 创建sequence: 代码如下:CREATE SEQUENCE SEQU_DATA_DATAINFO IN
- arcgis使用Python脚本进行批量截图介绍最近公司数据部那边有个需求,需要结合矢量数据和影像数据,进行批量截图,并且截图中只能有一个图
- 本文实例讲述了php生成shtml类及其用法。分享给大家供大家参考。具体如下:<?php class Shtml{ &nb
- 快速入门模块提供三个类来处理一对一映射类型的一些操作'bidict', 'inverted', 'n